From 343c2f4fe5f6091cccc328a1ff44ea03d4fe9e12 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 17:43:35 -0800 Subject: [PATCH 01/33] Naively Replace ES5 Module Syntax with ES6 Module Syntax This will allow us to unify the Node and Browser Sources... --- input/face.js | 2 +- node/core/corner.js | 2 +- node/core/discrete-exterior-calculus.js | 4 +-- node/core/edge.js | 2 +- node/core/face.js | 2 +- node/core/geometry.js | 4 +-- node/core/halfedge.js | 2 +- node/core/mesh.js | 12 +++---- node/core/vertex.js | 2 +- node/linear-algebra/complex-dense-matrix.js | 8 ++--- node/linear-algebra/complex-sparse-matrix.js | 8 ++--- node/linear-algebra/complex.js | 6 ++-- node/linear-algebra/dense-matrix.js | 6 ++-- node/linear-algebra/linear-algebra-asm.js | 2 +- node/linear-algebra/linear-algebra.js | 36 +++++++++---------- node/linear-algebra/sparse-matrix.js | 8 ++--- node/linear-algebra/vector.js | 2 +- .../trivial-connections.js | 12 +++---- .../projects/geodesic-distance/heat-method.js | 6 ++-- .../geometric-flow/mean-curvature-flow.js | 8 ++--- .../modified-mean-curvature-flow.js | 4 +-- .../boundary-first-flattening.js | 8 ++--- .../spectral-conformal-parameterization.js | 10 +++--- .../poisson-problem/scalar-poisson-problem.js | 6 ++-- .../harmonic-bases.js | 6 ++-- .../hodge-decomposition.js | 8 ++--- .../vector-field-decomposition/tree-cotree.js | 2 +- node/tests/direction-field-design/test.js | 14 ++++---- node/tests/discrete-exterior-calculus/test.js | 14 ++++---- node/tests/geodesic-distance/test.js | 14 ++++---- node/tests/geometric-flow/test.js | 16 ++++----- node/tests/geometry/test.js | 12 +++---- node/tests/linear-algebra/test.js | 4 +-- node/tests/mesh/test.js | 8 ++--- node/tests/parameterization/test.js | 14 ++++---- node/tests/poisson-problem/test.js | 14 ++++---- node/tests/vector-field-decomposition/test.js | 18 +++++----- node/utils/colormap.js | 14 ++++---- node/utils/distortion.js | 4 +-- node/utils/meshio.js | 4 +-- node/utils/solvers.js | 4 +-- tests/direction-field-design/solution.js | 2 +- tests/discrete-exterior-calculus/solution.js | 2 +- tests/geodesic-distance/solution.js | 2 +- tests/geometric-flow/solution.js | 2 +- tests/geometry/solution.js | 2 +- tests/parameterization/solution.js | 2 +- tests/poisson-problem/solution.js | 2 +- tests/vector-field-decomposition/solution.js | 2 +- 49 files changed, 174 insertions(+), 174 deletions(-) diff --git a/input/face.js b/input/face.js index 3cd191b..05561ca 100644 --- a/input/face.js +++ b/input/face.js @@ -51301,4 +51301,4 @@ f 17145 17118 17157 f 17118 17145 1087 `; -module.exports = face \ No newline at end of file +export default face; \ No newline at end of file diff --git a/node/core/corner.js b/node/core/corner.js index 13e7796..d59ff3e 100644 --- a/node/core/corner.js +++ b/node/core/corner.js @@ -57,4 +57,4 @@ class Corner { } } -module.exports = Corner \ No newline at end of file +export default Corner; \ No newline at end of file diff --git a/node/core/discrete-exterior-calculus.js b/node/core/discrete-exterior-calculus.js index 7d9f830..d2914f0 100644 --- a/node/core/discrete-exterior-calculus.js +++ b/node/core/discrete-exterior-calculus.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let SparseMatrix = LinearAlgebra.SparseMatrix; let Triplet = LinearAlgebra.Triplet; @@ -127,4 +127,4 @@ class DEC { } } -module.exports = DEC \ No newline at end of file +export default DEC; \ No newline at end of file diff --git a/node/core/edge.js b/node/core/edge.js index e500ee2..2501f9b 100644 --- a/node/core/edge.js +++ b/node/core/edge.js @@ -29,4 +29,4 @@ class Edge { } } -module.exports = Edge \ No newline at end of file +export default Edge; \ No newline at end of file diff --git a/node/core/face.js b/node/core/face.js index ab3cbc1..1b4cbea 100644 --- a/node/core/face.js +++ b/node/core/face.js @@ -306,4 +306,4 @@ class FaceCornerIterator { } } -module.exports = Face \ No newline at end of file +export default Face; \ No newline at end of file diff --git a/node/core/geometry.js b/node/core/geometry.js index a69933c..0050e04 100644 --- a/node/core/geometry.js +++ b/node/core/geometry.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let Complex = LinearAlgebra.Complex; let SparseMatrix = LinearAlgebra.SparseMatrix; @@ -579,4 +579,4 @@ function normalize(positions, vertices, rescale = true) { } } -module.exports = [Geometry, normalize] \ No newline at end of file +export { Geometry, normalize }; \ No newline at end of file diff --git a/node/core/halfedge.js b/node/core/halfedge.js index d965790..fc3cdbd 100644 --- a/node/core/halfedge.js +++ b/node/core/halfedge.js @@ -57,4 +57,4 @@ class Halfedge { } } -module.exports = Halfedge \ No newline at end of file +export default Halfedge; \ No newline at end of file diff --git a/node/core/mesh.js b/node/core/mesh.js index eede0f3..852ee76 100644 --- a/node/core/mesh.js +++ b/node/core/mesh.js @@ -1,8 +1,8 @@ -let Vertex = require('./vertex.js'); -let Edge = require('./edge.js'); -let Face = require('./face.js'); -let Halfedge = require('./halfedge.js'); -let Corner = require('./corner.js'); +import Vertex from './vertex.js'; +import Edge from './edge.js'; +import Face from './face.js'; +import Halfedge from './halfedge.js'; +import Corner from './corner.js'; class Mesh { /** @@ -406,4 +406,4 @@ function indexElements(elementList) { return index; } -module.exports = [Mesh, indexElements] \ No newline at end of file +export { Mesh, indexElements } \ No newline at end of file diff --git a/node/core/vertex.js b/node/core/vertex.js index 4319786..d3980b6 100644 --- a/node/core/vertex.js +++ b/node/core/vertex.js @@ -335,4 +335,4 @@ class VertexCornerIterator { } } -module.exports = Vertex \ No newline at end of file +export default Vertex; \ No newline at end of file diff --git a/node/linear-algebra/complex-dense-matrix.js b/node/linear-algebra/complex-dense-matrix.js index f004899..3bf9047 100644 --- a/node/linear-algebra/complex-dense-matrix.js +++ b/node/linear-algebra/complex-dense-matrix.js @@ -1,6 +1,6 @@ -let Module = require('./linear-algebra-asm.js'); -let memoryManager = require('./emscripten-memory-manager.js'); -let Complex = require('./complex.js'); +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import Complex from './complex.js'; class ComplexDenseMatrix { /** @@ -291,4 +291,4 @@ class ComplexDenseMatrix { } } -module.exports = ComplexDenseMatrix \ No newline at end of file +export default ComplexDenseMatrix; \ No newline at end of file diff --git a/node/linear-algebra/complex-sparse-matrix.js b/node/linear-algebra/complex-sparse-matrix.js index dec82ad..f4d1de1 100644 --- a/node/linear-algebra/complex-sparse-matrix.js +++ b/node/linear-algebra/complex-sparse-matrix.js @@ -1,6 +1,6 @@ -let Module = require('./linear-algebra-asm.js'); -let memoryManager = require('./emscripten-memory-manager.js'); -let ComplexDenseMatrix = require('./complex-dense-matrix.js'); +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import ComplexDenseMatrix from './complex-dense-matrix.js'; class ComplexSparseMatrix { /** @@ -426,4 +426,4 @@ class ComplexQR { } } -module.exports = [ComplexSparseMatrix, ComplexTriplet] \ No newline at end of file +export { ComplexSparseMatrix, ComplexTriplet }; \ No newline at end of file diff --git a/node/linear-algebra/complex.js b/node/linear-algebra/complex.js index 5e0db93..8bbae15 100644 --- a/node/linear-algebra/complex.js +++ b/node/linear-algebra/complex.js @@ -1,5 +1,5 @@ -let Module = require('./linear-algebra-asm.js'); -let memoryManager = require('./emscripten-memory-manager.js'); +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; class Complex { /** @@ -179,4 +179,4 @@ class Complex { } } -module.exports = Complex \ No newline at end of file +export default Complex; \ No newline at end of file diff --git a/node/linear-algebra/dense-matrix.js b/node/linear-algebra/dense-matrix.js index 1a5b6a4..494f98e 100644 --- a/node/linear-algebra/dense-matrix.js +++ b/node/linear-algebra/dense-matrix.js @@ -1,5 +1,5 @@ -let Module = require('./linear-algebra-asm.js'); -let memoryManager = require('./emscripten-memory-manager.js'); +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; class DenseMatrix { /** @@ -276,4 +276,4 @@ class DenseMatrix { } } -module.exports = DenseMatrix \ No newline at end of file +export default DenseMatrix; \ No newline at end of file diff --git a/node/linear-algebra/linear-algebra-asm.js b/node/linear-algebra/linear-algebra-asm.js index bb624f1..f16b84d 100644 --- a/node/linear-algebra/linear-algebra-asm.js +++ b/node/linear-algebra/linear-algebra-asm.js @@ -21,6 +21,6 @@ var Jc=[ZF,zv,Fv,Aw,Bw,Kw,Lw,ZF];var Kc=[_F,Sw,Yw,_F];var Lc=[$F,rB,AB,TB,Wk,bl, // EMSCRIPTEN_END_ASM (Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module["stackSave"]=asm["stackSave"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var __GLOBAL__sub_I_embind_cpp=Module["__GLOBAL__sub_I_embind_cpp"]=asm["__GLOBAL__sub_I_embind_cpp"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=asm["_pthread_mutex_unlock"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=asm["_pthread_cond_broadcast"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _memmove=Module["_memmove"]=asm["_memmove"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=asm["_pthread_mutex_lock"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memset=Module["_memset"]=asm["_memset"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidd=Module["dynCall_iidd"]=asm["dynCall_iidd"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_iiiid=Module["dynCall_iiiid"]=asm["dynCall_iiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];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_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;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"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){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(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}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() -module.exports = Module +export default Module; diff --git a/node/linear-algebra/linear-algebra.js b/node/linear-algebra/linear-algebra.js index dcb10eb..ccbd85d 100644 --- a/node/linear-algebra/linear-algebra.js +++ b/node/linear-algebra/linear-algebra.js @@ -1,19 +1,19 @@ -let Vector = require('./vector.js'); -let memoryManager = require('./emscripten-memory-manager.js'); -let Complex = require('./complex.js'); -let DenseMatrix = require('./dense-matrix.js'); -let ComplexDenseMatrix = require('./complex-dense-matrix.js'); -let [SparseMatrix, Triplet] = require('./sparse-matrix.js'); -let [ComplexSparseMatrix, ComplexTriplet] = require('./complex-sparse-matrix.js'); +import Vector from './vector.js'; +import memoryManager from './emscripten-memory-manager.js'; +import Complex from './complex.js'; +import DenseMatrix from './dense-matrix.js'; +import ComplexDenseMatrix from' ./complex-dense-matrix.js'; +import { SparseMatrix, Triplet } from './sparse-matrix.js'; +import { ComplexSparseMatrix, ComplexTriplet } from './complex-sparse-matrix.js'; -module.exports = { - "Vector": Vector, - "memoryManager": memoryManager, - "Complex": Complex, - "DenseMatrix": DenseMatrix, - "SparseMatrix": SparseMatrix, - "Triplet": Triplet, - "ComplexDenseMatrix": ComplexDenseMatrix, - "ComplexSparseMatrix": ComplexSparseMatrix, - "ComplexTriplet": ComplexTriplet -} \ No newline at end of file +export default { + Vector, + memoryManager, + Complex, + DenseMatrix, + SparseMatrix, + Triplet, + ComplexDenseMatrix, + ComplexSparseMatrix, + ComplexTriplet +}; \ No newline at end of file diff --git a/node/linear-algebra/sparse-matrix.js b/node/linear-algebra/sparse-matrix.js index 6cea0c3..1a656a0 100644 --- a/node/linear-algebra/sparse-matrix.js +++ b/node/linear-algebra/sparse-matrix.js @@ -1,6 +1,6 @@ -let Module = require('./linear-algebra-asm.js'); -let memoryManager = require('./emscripten-memory-manager.js'); -let DenseMatrix = require('./dense-matrix.js'); +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import DenseMatrix from './dense-matrix.js'; class SparseMatrix { /** @@ -406,4 +406,4 @@ class QR { } } -module.exports = [SparseMatrix, Triplet] \ No newline at end of file +export { SparseMatrix, Triplet }; \ No newline at end of file diff --git a/node/linear-algebra/vector.js b/node/linear-algebra/vector.js index a08b2e3..ffae7b0 100644 --- a/node/linear-algebra/vector.js +++ b/node/linear-algebra/vector.js @@ -181,4 +181,4 @@ class Vector { } } -module.exports = Vector \ No newline at end of file +export default Vector; \ No newline at end of file diff --git a/node/projects/direction-field-design/trivial-connections.js b/node/projects/direction-field-design/trivial-connections.js index 0672982..1e02f76 100644 --- a/node/projects/direction-field-design/trivial-connections.js +++ b/node/projects/direction-field-design/trivial-connections.js @@ -1,11 +1,11 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let DenseMatrix = LinearAlgebra.DenseMatrix; let SparseMatrix = LinearAlgebra.SparseMatrix; let Triplet = LinearAlgebra.Triplet; -let HodgeDecomposition = require('../vector-field-decomposition/hodge-decomposition.js'); -let TreeCotree = require('../vector-field-decomposition/tree-cotree.js'); -let HarmonicBases = require('../vector-field-decomposition/harmonic-bases.js'); -let indexElements = require('../../core/mesh.js')[1]; +import HodgeDecomposition from '../vector-field-decomposition/hodge-decomposition.js'; +import TreeCotree from '../vector-field-decomposition/tree-cotree.js'; +import HarmonicBases from '../vector-field-decomposition/harmonic-bases.js'; +import { indexElements } from '../../core/mesh.js'; class TrivialConnections { /** @@ -226,4 +226,4 @@ class TrivialConnections { } } -module.exports = TrivialConnections \ No newline at end of file +export default TrivialConnections; \ No newline at end of file diff --git a/node/projects/geodesic-distance/heat-method.js b/node/projects/geodesic-distance/heat-method.js index 3d2da02..e8ec8b2 100644 --- a/node/projects/geodesic-distance/heat-method.js +++ b/node/projects/geodesic-distance/heat-method.js @@ -1,7 +1,7 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let DenseMatrix = LinearAlgebra.DenseMatrix; -let indexElements = require('../../core/mesh.js')[1]; +import { indexElements } from '../../core/mesh.js'; class HeatMethod { /** @@ -137,4 +137,4 @@ class HeatMethod { } } -module.exports = HeatMethod \ No newline at end of file +export default HeatMethod; \ No newline at end of file diff --git a/node/projects/geometric-flow/mean-curvature-flow.js b/node/projects/geometric-flow/mean-curvature-flow.js index c39ff1a..9cbdcb5 100644 --- a/node/projects/geometric-flow/mean-curvature-flow.js +++ b/node/projects/geometric-flow/mean-curvature-flow.js @@ -1,7 +1,7 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let DenseMatrix = LinearAlgebra.DenseMatrix; -let indexElements = require('../../core/mesh.js')[1]; -let normalize = require('../../core/geometry.js')[1]; +import { indexElements } from '../../core/mesh.js'; +import { normalize } from '../../core/geometry.js'; class MeanCurvatureFlow { /** @@ -75,4 +75,4 @@ class MeanCurvatureFlow { } } -module.exports = MeanCurvatureFlow \ No newline at end of file +export default MeanCurvatureFlow; \ No newline at end of file diff --git a/node/projects/geometric-flow/modified-mean-curvature-flow.js b/node/projects/geometric-flow/modified-mean-curvature-flow.js index 5d8bab0..d77c23f 100644 --- a/node/projects/geometric-flow/modified-mean-curvature-flow.js +++ b/node/projects/geometric-flow/modified-mean-curvature-flow.js @@ -1,4 +1,4 @@ -let MeanCurvatureFlow = require('./mean-curvature-flow.js'); +import MeanCurvatureFlow from './mean-curvature-flow.js'; class ModifiedMeanCurvatureFlow extends MeanCurvatureFlow { /** @@ -22,4 +22,4 @@ class ModifiedMeanCurvatureFlow extends MeanCurvatureFlow { } } -module.exports = ModifiedMeanCurvatureFlow \ No newline at end of file +export default ModifiedMeanCurvatureFlow; \ No newline at end of file diff --git a/node/projects/parameterization/boundary-first-flattening.js b/node/projects/parameterization/boundary-first-flattening.js index aa43091..f4de7a0 100644 --- a/node/projects/parameterization/boundary-first-flattening.js +++ b/node/projects/parameterization/boundary-first-flattening.js @@ -1,9 +1,9 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let DenseMatrix = LinearAlgebra.DenseMatrix; let SparseMatrix = LinearAlgebra.SparseMatrix; -let Solvers = require('../../utils/solvers.js'); -let normalize = require('../../core/geometry.js')[1]; +import Solvers from '../../utils/solvers.js'; +import { normalize } from '../../core/geometry.js'; class BoundaryFirstFlattening { /** @@ -398,4 +398,4 @@ class BoundaryFirstFlattening { } } -module.exports = BoundaryFirstFlattening \ No newline at end of file +export default BoundaryFirstFlattening; \ No newline at end of file diff --git a/node/projects/parameterization/spectral-conformal-parameterization.js b/node/projects/parameterization/spectral-conformal-parameterization.js index 99cd9ba..eea87f9 100644 --- a/node/projects/parameterization/spectral-conformal-parameterization.js +++ b/node/projects/parameterization/spectral-conformal-parameterization.js @@ -1,11 +1,11 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let Complex = LinearAlgebra.Complex; let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; let ComplexTriplet = LinearAlgebra.ComplexTriplet; -let Solvers = require('../../utils/solvers.js'); -let indexElements = require('../../core/mesh.js')[1]; -let normalize = require('../../core/geometry.js')[1]; +import Solvers from '../../utils/solvers.js'; +import { indexElements } from '../../core/mesh.js'; +import { normalize } from '../../core/geometry.js'; class SpectralConformalParameterization { /** @@ -80,4 +80,4 @@ class SpectralConformalParameterization { } } -module.exports = SpectralConformalParameterization \ No newline at end of file +export default SpectralConformalParameterization; \ No newline at end of file diff --git a/node/projects/poisson-problem/scalar-poisson-problem.js b/node/projects/poisson-problem/scalar-poisson-problem.js index 472753e..51b6087 100644 --- a/node/projects/poisson-problem/scalar-poisson-problem.js +++ b/node/projects/poisson-problem/scalar-poisson-problem.js @@ -1,6 +1,6 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let DenseMatrix = LinearAlgebra.DenseMatrix; -let indexElements = require('../../core/mesh.js')[1]; +import { indexElements } from '../../core/mesh.js'; /** * @module Projects @@ -47,4 +47,4 @@ class ScalarPoissonProblem { } } -module.exports = ScalarPoissonProblem \ No newline at end of file +export default ScalarPoissonProblem; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/harmonic-bases.js b/node/projects/vector-field-decomposition/harmonic-bases.js index 42c69b5..ca87644 100644 --- a/node/projects/vector-field-decomposition/harmonic-bases.js +++ b/node/projects/vector-field-decomposition/harmonic-bases.js @@ -1,6 +1,6 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let DenseMatrix = LinearAlgebra.DenseMatrix; -let indexElements = require('../../core/mesh.js')[1]; +import { indexElements } from '../../core/mesh.js'; class HarmonicBases { /** @@ -69,4 +69,4 @@ class HarmonicBases { } } -module.exports = HarmonicBases \ No newline at end of file +export default HarmonicBases; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/hodge-decomposition.js b/node/projects/vector-field-decomposition/hodge-decomposition.js index d5e8ae5..bc077ee 100644 --- a/node/projects/vector-field-decomposition/hodge-decomposition.js +++ b/node/projects/vector-field-decomposition/hodge-decomposition.js @@ -1,7 +1,7 @@ -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let SparseMatrix = LinearAlgebra.SparseMatrix; -let DEC = require('../../core/discrete-exterior-calculus.js'); -let indexElements = require('../../core/mesh.js')[1]; +import DEC from '../../core/discrete-exterior-calculus.js'; +import { indexElements } from '../../core/mesh.js'; class HodgeDecomposition { /** @@ -94,4 +94,4 @@ class HodgeDecomposition { } } -module.exports = HodgeDecomposition \ No newline at end of file +export default HodgeDecomposition; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/tree-cotree.js b/node/projects/vector-field-decomposition/tree-cotree.js index 7c83e67..c35fbe8 100644 --- a/node/projects/vector-field-decomposition/tree-cotree.js +++ b/node/projects/vector-field-decomposition/tree-cotree.js @@ -169,4 +169,4 @@ class TreeCotree { } } -module.exports = TreeCotree \ No newline at end of file +export default TreeCotree; \ No newline at end of file diff --git a/node/tests/direction-field-design/test.js b/node/tests/direction-field-design/test.js index e3d73be..83fb52f 100644 --- a/node/tests/direction-field-design/test.js +++ b/node/tests/direction-field-design/test.js @@ -1,12 +1,12 @@ -let chai = require('chai'); -let solution = require('../../../tests/direction-field-design/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/direction-field-design/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let TrivialConnections = require('../../projects/direction-field-design/trivial-connections.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import TrivialConnections from '../../projects/direction-field-design/trivial-connections.js'; describe("TrivialConnections", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/discrete-exterior-calculus/test.js b/node/tests/discrete-exterior-calculus/test.js index 1c36cb3..a5c154e 100644 --- a/node/tests/discrete-exterior-calculus/test.js +++ b/node/tests/discrete-exterior-calculus/test.js @@ -1,12 +1,12 @@ -let chai = require('chai'); -let solution = require('../../../tests/discrete-exterior-calculus/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/discrete-exterior-calculus/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -let MeshIO = require('../../utils/meshio.js'); -let [Mesh, indexElements] = require('../../core/mesh.js'); -let Geometry = require('../../core/geometry.js')[0]; -let DEC = require('../../core/discrete-exterior-calculus.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh, indexElements } from '../../core/mesh.js'; +import Geometry from '../../core/geometry.js'; +import DEC from '../../core/discrete-exterior-calculus.js'; describe("DEC", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/geodesic-distance/test.js b/node/tests/geodesic-distance/test.js index 57eecc7..8f441ea 100644 --- a/node/tests/geodesic-distance/test.js +++ b/node/tests/geodesic-distance/test.js @@ -1,13 +1,13 @@ -let chai = require('chai'); -let solution = require('../../../tests/geodesic-distance/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/geodesic-distance/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let HeatMethod = require('../../projects/geodesic-distance/heat-method.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import HeatMethod from '../../projects/geodesic-distance/heat-method.js'; describe("HeatMethod", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/geometric-flow/test.js b/node/tests/geometric-flow/test.js index 2a1fe69..33116b5 100644 --- a/node/tests/geometric-flow/test.js +++ b/node/tests/geometric-flow/test.js @@ -1,13 +1,13 @@ -let chai = require('chai'); -let solution = require('../../../tests/geometric-flow/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/geometric-flow/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let MeanCurvatureFlow = require('../../projects/geometric-flow/mean-curvature-flow.js'); -let ModifiedMeanCurvatureFlow = require('../../projects/geometric-flow/modified-mean-curvature-flow.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import MeanCurvatureFlow from '../../projects/geometric-flow/mean-curvature-flow.js'; +import ModifiedMeanCurvatureFlow from '../../projects/geometric-flow/modified-mean-curvature-flow.js'; describe("MeanCurvatureFlow", function() { let steps, h; diff --git a/node/tests/geometry/test.js b/node/tests/geometry/test.js index d77aae4..c457a82 100644 --- a/node/tests/geometry/test.js +++ b/node/tests/geometry/test.js @@ -1,14 +1,14 @@ -let chai = require('chai'); -let solution = require('../../../tests/geometry/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/geometry/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; let SparseMatrix = LinearAlgebra.SparseMatrix; let Triplet = LinearAlgebra.Triplet; -let MeshIO = require('../../utils/meshio.js'); -let [Mesh, indexElements] = require('../../core/mesh.js'); -let Geometry = require('../../core/geometry.js')[0]; +import MeshIO from '../../utils/meshio.js'; +import { Mesh, indexElements } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; describe("Geometry", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/linear-algebra/test.js b/node/tests/linear-algebra/test.js index 2f5b899..c06fcc9 100644 --- a/node/tests/linear-algebra/test.js +++ b/node/tests/linear-algebra/test.js @@ -1,5 +1,5 @@ -let chai = require('chai'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let Complex = LinearAlgebra.Complex; diff --git a/node/tests/mesh/test.js b/node/tests/mesh/test.js index e9c2c53..b6b79aa 100644 --- a/node/tests/mesh/test.js +++ b/node/tests/mesh/test.js @@ -1,7 +1,7 @@ -let chai = require('chai'); -let faceMesh = require('../../../input/face.js'); -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; +import chai from 'chai'; +import faceMesh from '../../../input/face.js'; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; describe("Mesh", function() { let polygonSoup = undefined; diff --git a/node/tests/parameterization/test.js b/node/tests/parameterization/test.js index c4a89b9..293c8c3 100644 --- a/node/tests/parameterization/test.js +++ b/node/tests/parameterization/test.js @@ -1,15 +1,15 @@ -let chai = require('chai'); -let solution = require('../../../tests/parameterization/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/parameterization/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let Complex = LinearAlgebra.Complex; let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; let ComplexTriplet = LinearAlgebra.ComplexTriplet; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let SpectralConformalParameterization = require('../../projects/parameterization/spectral-conformal-parameterization.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import SpectralConformalParameterization from '../../projects/parameterization/spectral-conformal-parameterization.js'; describe("SpectralConformalParameterization", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/poisson-problem/test.js b/node/tests/poisson-problem/test.js index 3d055a0..8fa699e 100644 --- a/node/tests/poisson-problem/test.js +++ b/node/tests/poisson-problem/test.js @@ -1,12 +1,12 @@ -let chai = require('chai'); -let solution = require('../../../tests/poisson-problem/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/poisson-problem/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let ScalarPoissonProblem = require('../../projects/poisson-problem/scalar-poisson-problem.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import ScalarPoissonProblem from '../../projects/poisson-problem/scalar-poisson-problem.js'; describe("ScalarPoissonProblem", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/vector-field-decomposition/test.js b/node/tests/vector-field-decomposition/test.js index 51b457c..2a2823c 100644 --- a/node/tests/vector-field-decomposition/test.js +++ b/node/tests/vector-field-decomposition/test.js @@ -1,14 +1,14 @@ -let chai = require('chai'); -let solution = require('../../../tests/vector-field-decomposition/solution.js'); -let LinearAlgebra = require('../../linear-algebra/linear-algebra.js'); +import chai from 'chai'; +import solution from '../../../tests/vector-field-decomposition/solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -let MeshIO = require('../../utils/meshio.js'); -let Mesh = require('../../core/mesh.js')[0]; -let Geometry = require('../../core/geometry.js')[0]; -let HodgeDecomposition = require('../../projects/vector-field-decomposition/hodge-decomposition.js'); -let TreeCotree = require('../../projects/vector-field-decomposition/tree-cotree.js'); -let HarmonicBases = require('../../projects/vector-field-decomposition/harmonic-bases.js'); +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import HodgeDecomposition from '../../projects/vector-field-decomposition/hodge-decomposition.js'; +import TreeCotree from '../../projects/vector-field-decomposition/tree-cotree.js'; +import HarmonicBases from '../../projects/vector-field-decomposition/harmonic-bases.js'; describe("VectorFieldDecomposition", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/utils/colormap.js b/node/utils/colormap.js index 2f49b6c..c0cf189 100644 --- a/node/utils/colormap.js +++ b/node/utils/colormap.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let seismic = [ @@ -1567,9 +1567,9 @@ function colormap(x, min, max, values) { return c1.plus(c2.minus(c1).times(scaling)); } -module.exports = { - "colormap": colormap, - "seismic": seismic, - "coolwarm": coolwarm, - "hot": hot -} \ No newline at end of file +export { + colormap, + seismic, + coolwarm, + hot +}; \ No newline at end of file diff --git a/node/utils/distortion.js b/node/utils/distortion.js index d5f4134..4a41a95 100644 --- a/node/utils/distortion.js +++ b/node/utils/distortion.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; /** @@ -254,4 +254,4 @@ function hsv(h, s, v) { return new Vector(r, g, b); } -module.exports = Distortion \ No newline at end of file +export default Distortion; \ No newline at end of file diff --git a/node/utils/meshio.js b/node/utils/meshio.js index 6bb768f..2c8d96a 100644 --- a/node/utils/meshio.js +++ b/node/utils/meshio.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; /** @@ -91,4 +91,4 @@ class MeshIO { } } -module.exports = MeshIO \ No newline at end of file +export default MeshIO; \ No newline at end of file diff --git a/node/utils/solvers.js b/node/utils/solvers.js index 6bd1eb6..d3cf46f 100644 --- a/node/utils/solvers.js +++ b/node/utils/solvers.js @@ -1,4 +1,4 @@ -let LinearAlgebra = require('../linear-algebra/linear-algebra.js'); +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; let Complex = LinearAlgebra.Complex; let ComplexDenseMatrix = LinearAlgebra.ComplexDenseMatrix; @@ -78,4 +78,4 @@ class Solvers { } } -module.exports = Solvers \ No newline at end of file +export default Solvers; \ No newline at end of file diff --git a/tests/direction-field-design/solution.js b/tests/direction-field-design/solution.js index e476ad9..2b7f52b 100644 --- a/tests/direction-field-design/solution.js +++ b/tests/direction-field-design/solution.js @@ -39932,4 +39932,4 @@ f 1484 508 1482 f 1476 1482 510 `; -module.exports = solution \ No newline at end of file +export default solution; \ No newline at end of file diff --git a/tests/discrete-exterior-calculus/solution.js b/tests/discrete-exterior-calculus/solution.js index 7390253..02555dc 100644 --- a/tests/discrete-exterior-calculus/solution.js +++ b/tests/discrete-exterior-calculus/solution.js @@ -55290,4 +55290,4 @@ f 1484 508 1482 f 1476 1482 510 `; -module.exports = solution \ No newline at end of file +export default solution; \ No newline at end of file diff --git a/tests/geodesic-distance/solution.js b/tests/geodesic-distance/solution.js index 1820f43..2d9b2b4 100644 --- a/tests/geodesic-distance/solution.js +++ b/tests/geodesic-distance/solution.js @@ -27856,4 +27856,4 @@ f 358 3483 1119 X -0.6173470364864597 -0.22205606428481214 -0.754701093715734 `; -module.exports = solution \ No newline at end of file +export default solution; \ No newline at end of file diff --git a/tests/geometric-flow/solution.js b/tests/geometric-flow/solution.js index 10699c0..880345e 100644 --- a/tests/geometric-flow/solution.js +++ b/tests/geometric-flow/solution.js @@ -17413,4 +17413,4 @@ f 3102 2789 322 f 3483 1119 358 `; -module.exports = solution \ No newline at end of file +export default solution; \ No newline at end of file diff --git a/tests/geometry/solution.js b/tests/geometry/solution.js index a93afe1..4e6385f 100644 --- a/tests/geometry/solution.js +++ b/tests/geometry/solution.js @@ -76611,4 +76611,4 @@ f 3102 2789 322 f 3483 1119 358 `; -module.exports = solution \ No newline at end of file +export default solution; \ No newline at end of file diff --git a/tests/parameterization/solution.js b/tests/parameterization/solution.js index e73b25d..34ceb6d 100644 --- a/tests/parameterization/solution.js +++ b/tests/parameterization/solution.js @@ -24911,4 +24911,4 @@ f 2265 2063 2267 f 2267 2269 2271 `; -module.exports = solution \ No newline at end of file +export default solution \ No newline at end of file diff --git a/tests/poisson-problem/solution.js b/tests/poisson-problem/solution.js index 25bc47e..062925e 100644 --- a/tests/poisson-problem/solution.js +++ b/tests/poisson-problem/solution.js @@ -17411,4 +17411,4 @@ f 322 3102 2789 f 358 3483 1119 `; -module.exports = solution \ No newline at end of file +export default solution \ No newline at end of file diff --git a/tests/vector-field-decomposition/solution.js b/tests/vector-field-decomposition/solution.js index 6cc4077..21e3fae 100644 --- a/tests/vector-field-decomposition/solution.js +++ b/tests/vector-field-decomposition/solution.js @@ -46078,4 +46078,4 @@ f 1484 508 1482 f 1476 1482 510 `; -module.exports = solution \ No newline at end of file +export default solution \ No newline at end of file From 0f1f988050ff07899bdc6867de2fec126e6c75be Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 17:59:49 -0800 Subject: [PATCH 02/33] Replace the Originals --- core/corner.js | 4 +- core/discrete-exterior-calculus.js | 8 +- core/edge.js | 4 +- core/face.js | 6 +- core/geometry.js | 12 +- core/halfedge.js | 4 +- core/mesh-subset.js | 4 +- core/mesh.js | 10 +- core/vertex.js | 6 +- linear-algebra/complex-dense-matrix.js | 116 ++++++------- linear-algebra/complex-sparse-matrix.js | 156 +++++++++--------- linear-algebra/complex.js | 67 ++++---- linear-algebra/dense-matrix.js | 99 +++++------ linear-algebra/emscripten-memory-manager.js | 12 +- linear-algebra/linear-algebra-asm.js | 2 +- linear-algebra/linear-algebra.js | 19 +++ linear-algebra/sparse-matrix.js | 146 ++++++++-------- linear-algebra/vector.js | 64 +++---- .../trivial-connections.js | 13 +- projects/geodesic-distance/heat-method.js | 9 +- .../geometric-flow/mean-curvature-flow.js | 9 +- .../modified-mean-curvature-flow.js | 6 +- .../boundary-first-flattening.js | 9 +- .../spectral-conformal-parameterization.js | 13 +- .../poisson-problem/scalar-poisson-problem.js | 8 +- .../harmonic-bases.js | 8 +- .../hodge-decomposition.js | 9 +- .../vector-field-decomposition/tree-cotree.js | 6 +- 28 files changed, 467 insertions(+), 362 deletions(-) create mode 100644 linear-algebra/linear-algebra.js diff --git a/core/corner.js b/core/corner.js index 7aef8f1..d59ff3e 100644 --- a/core/corner.js +++ b/core/corner.js @@ -1,5 +1,3 @@ -"use strict"; - class Corner { /** * This class represents a corner in a {@link module:Core.Mesh Mesh}. It is a convenience @@ -58,3 +56,5 @@ class Corner { return this.index; } } + +export default Corner; \ No newline at end of file diff --git a/core/discrete-exterior-calculus.js b/core/discrete-exterior-calculus.js index d89cf07..d2914f0 100644 --- a/core/discrete-exterior-calculus.js +++ b/core/discrete-exterior-calculus.js @@ -1,7 +1,9 @@ -"use strict"; +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let SparseMatrix = LinearAlgebra.SparseMatrix; +let Triplet = LinearAlgebra.Triplet; /** - * This class contains methods to build common {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf discrete exterior calculus} operators. + * This class contains methods to build common {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf discrete exterior calculus} operators. * @memberof module:Core */ class DEC { @@ -124,3 +126,5 @@ class DEC { return SparseMatrix.fromTriplet(T); } } + +export default DEC; \ No newline at end of file diff --git a/core/edge.js b/core/edge.js index dc87ad5..2501f9b 100644 --- a/core/edge.js +++ b/core/edge.js @@ -1,5 +1,3 @@ -"use strict"; - class Edge { /** * This class represents an edge in a {@link module:Core.Mesh Mesh}. @@ -30,3 +28,5 @@ class Edge { return this.index; } } + +export default Edge; \ No newline at end of file diff --git a/core/face.js b/core/face.js index 7b555eb..1b4cbea 100644 --- a/core/face.js +++ b/core/face.js @@ -1,5 +1,3 @@ -"use strict"; - class Face { /** * This class represents a face in a {@link module:Core.Mesh Mesh}. @@ -306,4 +304,6 @@ class FaceCornerIterator { } } } -} \ No newline at end of file +} + +export default Face; \ No newline at end of file diff --git a/core/geometry.js b/core/geometry.js index b66e054..0050e04 100644 --- a/core/geometry.js +++ b/core/geometry.js @@ -1,4 +1,10 @@ -"use strict"; +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let Complex = LinearAlgebra.Complex; +let SparseMatrix = LinearAlgebra.SparseMatrix; +let Triplet = LinearAlgebra.Triplet; +let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; +let ComplexTriplet = LinearAlgebra.ComplexTriplet; class Geometry { /** @@ -245,7 +251,7 @@ class Geometry { /** * Computes the circumcentric dual area of a vertex. - * @see {@link http://cs.cmu.edu/~kmcrane/Projects/Other/TriangleAreasCheatSheet.pdf} + * @see {@link http://www.cs.cmu.edu/~kmcrane/Projects/Other/TriangleAreasCheatSheet.pdf} * @method module:Core.Geometry#circumcentricDualArea * @param {module:Core.Vertex} v The vertex whose circumcentric dual area needs to be computed. * @returns {number} @@ -572,3 +578,5 @@ function normalize(positions, vertices, rescale = true) { } } } + +export { Geometry, normalize }; \ No newline at end of file diff --git a/core/halfedge.js b/core/halfedge.js index 202f902..fc3cdbd 100644 --- a/core/halfedge.js +++ b/core/halfedge.js @@ -1,5 +1,3 @@ -"use strict"; - /** * This module implements a halfedge mesh data structure and its associated geometry. * A halfedge mesh stores mesh elements such as vertices, edges and faces as well as @@ -58,3 +56,5 @@ class Halfedge { return this.index; } } + +export default Halfedge; \ No newline at end of file diff --git a/core/mesh-subset.js b/core/mesh-subset.js index cc0f947..f54ff90 100644 --- a/core/mesh-subset.js +++ b/core/mesh-subset.js @@ -1,5 +1,3 @@ -"use strict"; - class MeshSubset { /** * This class represents a subset of a {@link module:Core.Mesh Mesh} @@ -212,3 +210,5 @@ class MeshSubset { return true; } } + +export default MeshSubset; \ No newline at end of file diff --git a/core/mesh.js b/core/mesh.js index 8bf01fd..852ee76 100644 --- a/core/mesh.js +++ b/core/mesh.js @@ -1,4 +1,8 @@ -"use strict"; +import Vertex from './vertex.js'; +import Edge from './edge.js'; +import Face from './face.js'; +import Halfedge from './halfedge.js'; +import Corner from './corner.js'; class Mesh { /** @@ -207,7 +211,7 @@ class Mesh { } // index elements - this.indexElements(); + this.indexElements(); return true; } @@ -401,3 +405,5 @@ function indexElements(elementList) { return index; } + +export { Mesh, indexElements } \ No newline at end of file diff --git a/core/vertex.js b/core/vertex.js index d9708ae..d3980b6 100644 --- a/core/vertex.js +++ b/core/vertex.js @@ -1,5 +1,3 @@ -"use strict"; - class Vertex { /** * This class represents a vertex in a {@link module:Core.Mesh Mesh}. @@ -335,4 +333,6 @@ class VertexCornerIterator { } } } -} \ No newline at end of file +} + +export default Vertex; \ No newline at end of file diff --git a/linear-algebra/complex-dense-matrix.js b/linear-algebra/complex-dense-matrix.js index c0d72a4..3bf9047 100644 --- a/linear-algebra/complex-dense-matrix.js +++ b/linear-algebra/complex-dense-matrix.js @@ -1,4 +1,6 @@ -"use strict"; +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import Complex from './complex.js'; class ComplexDenseMatrix { /** @@ -6,7 +8,7 @@ class ComplexDenseMatrix { * zero-valued entries, is stored explicitly. Do not create a ComplexDenseMatrix * from its constructor, instead use static factory methods such as zeros, * identity, ones, constant and random. - * @constructor module:LinearAlgebra.ComplexDenseMatrix + * @constructor ComplexDenseMatrix * @example * let A = ComplexDenseMatrix.zeros(20, 5); * let B = ComplexDenseMatrix.identity(10, 10); @@ -22,7 +24,7 @@ class ComplexDenseMatrix { /** * Deletes the emscripten heap allocated data of this dense matrix. * @ignore - * @method module:LinearAlgebra.ComplexDenseMatrix#delete + * @method ComplexDenseMatrix#delete */ delete() { this.data.delete(); @@ -30,10 +32,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n matrix of zeros. - * @method module:LinearAlgebra.ComplexDenseMatrix.zeros + * @method ComplexDenseMatrix.zeros * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ static zeros(m, n = 1) { return new ComplexDenseMatrix(new Module.ComplexDenseMatrix(m, n)); @@ -41,10 +43,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n identity matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix.identity + * @method ComplexDenseMatrix.identity * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ static identity(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.identity(m, n)); @@ -52,10 +54,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n matrix of ones. - * @method module:LinearAlgebra.ComplexDenseMatrix.ones + * @method ComplexDenseMatrix.ones * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ static ones(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.ones(m, n)); @@ -63,11 +65,11 @@ class ComplexDenseMatrix { /** * Initializes a m by n constant matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix.constant - * @param {module:LinearAlgebra.Complex} x The constant value stored in every entry of this complex dense matrix. + * @method ComplexDenseMatrix.constant + * @param {Complex} x The constant value stored in every entry of this complex dense matrix. * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ static constant(x, m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.constant(m, n, x.data)); @@ -75,10 +77,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n random matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix.random + * @method ComplexDenseMatrix.random * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ static random(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.random(m, n)); @@ -86,8 +88,8 @@ class ComplexDenseMatrix { /** * Returns the transpose of this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#transpose - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexDenseMatrix#transpose + * @returns {ComplexDenseMatrix} */ transpose() { return new ComplexDenseMatrix(this.data.transpose()); @@ -95,8 +97,8 @@ class ComplexDenseMatrix { /** * Returns the conjugate of this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#conjugate - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexDenseMatrix#conjugate + * @returns {ComplexDenseMatrix} */ conjugate() { return new ComplexDenseMatrix(this.data.conjugate()); @@ -104,7 +106,7 @@ class ComplexDenseMatrix { /** * Returns the number of rows in this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#nRows + * @method ComplexDenseMatrix#nRows * @returns {number} */ nRows() { @@ -113,7 +115,7 @@ class ComplexDenseMatrix { /** * Returns the number of columns in this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#nCols + * @method ComplexDenseMatrix#nCols * @returns {number} */ nCols() { @@ -122,7 +124,7 @@ class ComplexDenseMatrix { /** * Computes the lInfinity, l1 or l2 norm of this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#norm + * @method ComplexDenseMatrix#norm * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 * and l2 norm if n = 2. * @returns {number} @@ -133,7 +135,7 @@ class ComplexDenseMatrix { /** * Returns the rank of this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#rank + * @method ComplexDenseMatrix#rank * @returns {number} */ rank() { @@ -142,8 +144,8 @@ class ComplexDenseMatrix { /** * Sums all the entries in this complex dense matrix. - * @method module:LinearAlgebra.ComplexDenseMatrix#sum - * @returns {module:LinearAlgebra.Complex} + * @method ComplexDenseMatrix#sum + * @returns {Complex} */ sum() { let u = this.data.sum(); @@ -153,12 +155,12 @@ class ComplexDenseMatrix { /** * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method module:LinearAlgebra.ComplexDenseMatrix#subMatrix + * @method ComplexDenseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ subMatrix(r0, r1, c0 = 0, c1 = 1) { return new ComplexDenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); @@ -166,8 +168,8 @@ class ComplexDenseMatrix { /** * A += B - * @method module:LinearAlgebra.ComplexDenseMatrix#incrementBy - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. + * @method ComplexDenseMatrix#incrementBy + * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -175,8 +177,8 @@ class ComplexDenseMatrix { /** * A -= B - * @method module:LinearAlgebra.ComplexDenseMatrix#decrementBy - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix subtracted from this complex dense matrix. + * @method ComplexDenseMatrix#decrementBy + * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this complex dense matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -184,8 +186,8 @@ class ComplexDenseMatrix { /** * A *= s - * @method module:LinearAlgebra.ComplexDenseMatrix#scaleBy - * @param {module:LinearAlgebra.Complex} s The complex number this complex dense matrix is scaled by. + * @method ComplexDenseMatrix#scaleBy + * @param {Complex} s The complex number this complex dense matrix is scaled by. */ scaleBy(s) { this.data.scaleBy(s.data); @@ -193,9 +195,9 @@ class ComplexDenseMatrix { /** * Returns A + B - * @method module:LinearAlgebra.ComplexDenseMatrix#plus - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexDenseMatrix#plus + * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. + * @returns {ComplexDenseMatrix} */ plus(B) { return new ComplexDenseMatrix(this.data.plus(B.data)); @@ -203,10 +205,10 @@ class ComplexDenseMatrix { /** * Returns A - B - * @method module:LinearAlgebra.ComplexDenseMatrix#minus - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix subtracted from this + * @method ComplexDenseMatrix#minus + * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this * complex dense matrix. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ minus(B) { return new ComplexDenseMatrix(this.data.minus(B.data)); @@ -214,9 +216,9 @@ class ComplexDenseMatrix { /** * Returns A * s - * @method module:LinearAlgebra.ComplexDenseMatrix#timesComplex - * @param {module:LinearAlgebra.Complex} s The complex number this complex dense matrix is multiplied by. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexDenseMatrix#timesComplex + * @param {Complex} s The complex number this complex dense matrix is multiplied by. + * @returns {ComplexDenseMatrix} */ timesComplex(s) { return new ComplexDenseMatrix(this.data.timesComplex(s.data)); @@ -224,10 +226,10 @@ class ComplexDenseMatrix { /** * Returns A * B - * @method module:LinearAlgebra.ComplexDenseMatrix#timesDense - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix this complex dense matrix + * @method ComplexDenseMatrix#timesDense + * @param {ComplexDenseMatrix} B The complex dense matrix this complex dense matrix * is multiplied by. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ timesDense(B) { return new ComplexDenseMatrix(this.data.timesDense(B.data)); @@ -235,8 +237,8 @@ class ComplexDenseMatrix { /** * Returns -A - * @method module:LinearAlgebra.ComplexDenseMatrix#negated - * @return {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexDenseMatrix#negated + * @return {ComplexDenseMatrix} */ negated() { return new ComplexDenseMatrix(this.data.negated()); @@ -244,10 +246,10 @@ class ComplexDenseMatrix { /** * Returns A(i, j) - * @method module:LinearAlgebra.ComplexDenseMatrix#get + * @method ComplexDenseMatrix#get * @param {number} i The ith row of this complex dense matrix. * @param {number} j The jth column of this complex dense matrix. - * @return {module:LinearAlgebra.Complex} + * @return {Complex} */ get(i, j = 0) { let u = this.data.get(i, j); @@ -256,8 +258,8 @@ class ComplexDenseMatrix { /** * A(i, j) = x - * @method module:LinearAlgebra.ComplexDenseMatrix#set - * @param {module:LinearAlgebra.Complex} x The complex value the (i, j)th entry of this complex dense + * @method ComplexDenseMatrix#set + * @param {Complex} x The complex value the (i, j)th entry of this complex dense * matrix is set to. * @param {number} i The ith row of this complex dense matrix. * @param {number} j The jth column of this complex dense matrix. @@ -268,10 +270,10 @@ class ComplexDenseMatrix { /** * Concatenates two complex dense matrices horizontally. - * @method module:LinearAlgebra.ComplexDenseMatrix#hcat - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix that is concatenated horizontally + * @method ComplexDenseMatrix#hcat + * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated horizontally * with this complex dense matrix. - * @return {module:LinearAlgebra.ComplexDenseMatrix} + * @return {ComplexDenseMatrix} */ hcat(B) { return new ComplexDenseMatrix(this.data.hcat(B.data)); @@ -279,12 +281,14 @@ class ComplexDenseMatrix { /** * Concatenates two complex dense matrices vertically. - * @method module:LinearAlgebra.ComplexDenseMatrix#vcat - * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix that is concatenated vertically + * @method ComplexDenseMatrix#vcat + * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated vertically * with this complex dense matrix. - * @return {module:LinearAlgebra.ComplexDenseMatrix} + * @return {ComplexDenseMatrix} */ vcat(B) { return new ComplexDenseMatrix(this.data.vcat(B.data)); } } + +export default ComplexDenseMatrix; \ No newline at end of file diff --git a/linear-algebra/complex-sparse-matrix.js b/linear-algebra/complex-sparse-matrix.js index de66b79..f4d1de1 100644 --- a/linear-algebra/complex-sparse-matrix.js +++ b/linear-algebra/complex-sparse-matrix.js @@ -1,11 +1,13 @@ -"use strict"; +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import ComplexDenseMatrix from './complex-dense-matrix.js'; class ComplexSparseMatrix { /** * This class represents a m by n complex matrix where only nonzero entries * are stored explicitly. Do not create a ComplexSparseMatrix from its constructor, * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor module:LinearAlgebra.ComplexSparseMatrix + * @constructor ComplexSparseMatrix * @example * let T = new ComplexTriplet(100, 100); * T.addEntry(new Complex(3.4, 6.4), 11, 43); @@ -25,18 +27,18 @@ class ComplexSparseMatrix { /** * Deletes the emscripten heap allocated data of this complex sparse matrix. * @ignore - * @method module:LinearAlgebra.ComplexSparseMatrix#delete + * @method ComplexSparseMatrix#delete */ delete() { this.data.delete(); } /** - * Initializes a complex sparse matrix from a {@link module:LinearAlgebra.ComplexTriplet ComplexTriplet} object. - * @method module:LinearAlgebra.ComplexSparseMatrix.fromTriplet - * @param {module:LinearAlgebra.ComplexTriplet} T A complex triplet object containing only the nonzero + * Initializes a complex sparse matrix from a {@link ComplexTriplet} object. + * @method ComplexSparseMatrix.fromTriplet + * @param {ComplexTriplet} T A complex triplet object containing only the nonzero * entries that need to be stored in this complex sparse matrix. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ static fromTriplet(T) { return new ComplexSparseMatrix(new Module.ComplexSparseMatrix(T.data)); @@ -44,10 +46,10 @@ class ComplexSparseMatrix { /** * Initializes a m by n complex sparse identity matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix.identity + * @method ComplexSparseMatrix.identity * @param {number} m The number of rows in this complex sparse matrix. * @param {number} n The number of columns in this complex sparse matrix. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ static identity(m, n) { return new ComplexSparseMatrix(Module.ComplexSparseMatrix.identity(m, n)); @@ -55,10 +57,10 @@ class ComplexSparseMatrix { /** * Initializes a complex sparse diagonal matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix.diag - * @param {module:LinearAlgebra.ComplexDenseMatrix} d The complex dense vector (d.nCols() == 1) used + * @method ComplexSparseMatrix.diag + * @param {ComplexDenseMatrix} d The complex dense vector (d.nCols() == 1) used * to initialize this complex sparse diagonal matrix. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ static diag(d) { return new ComplexSparseMatrix(Module.ComplexSparseMatrix.diag(d.data)); @@ -66,8 +68,8 @@ class ComplexSparseMatrix { /** * Returns the transpose of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#transpose - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @method ComplexSparseMatrix#transpose + * @returns {ComplexSparseMatrix} */ transpose() { return new ComplexSparseMatrix(this.data.transpose()); @@ -75,8 +77,8 @@ class ComplexSparseMatrix { /** * Returns the inverse of this diagonal complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#invertDiagonal - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @method ComplexSparseMatrix#invertDiagonal + * @returns {ComplexSparseMatrix} */ invertDiagonal() { let N = this.nRows(); @@ -91,8 +93,8 @@ class ComplexSparseMatrix { /** * Returns the conjugate of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#conjugate - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @method ComplexSparseMatrix#conjugate + * @returns {ComplexSparseMatrix} */ conjugate() { return new ComplexSparseMatrix(this.data.conjugate()); @@ -100,7 +102,7 @@ class ComplexSparseMatrix { /** * Returns the number of rows in this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#nRows + * @method ComplexSparseMatrix#nRows * @returns {number} */ nRows() { @@ -109,7 +111,7 @@ class ComplexSparseMatrix { /** * Returns the number of columns in this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#nCols + * @method ComplexSparseMatrix#nCols * @returns {number} */ nCols() { @@ -118,7 +120,7 @@ class ComplexSparseMatrix { /** * Returns the number of nonzero entries in this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#nnz + * @method ComplexSparseMatrix#nnz * @returns {number} */ nnz() { @@ -127,7 +129,7 @@ class ComplexSparseMatrix { /** * Computes the frobenius norm of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#frobeniusNorm + * @method ComplexSparseMatrix#frobeniusNorm * @returns {number} */ frobeniusNorm() { @@ -137,39 +139,39 @@ class ComplexSparseMatrix { /** * Extracts a complex sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., * a matrix of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method module:LinearAlgebra.ComplexSparseMatrix#subMatrix + * @method ComplexSparseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ subMatrix(r0, r1, c0, c1) { return new ComplexSparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); } /** - * Returns a sparse {@link module:LinearAlgebra.ComplexCholesky ComplexCholesky} factorization of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#chol - * @returns {module:LinearAlgebra.ComplexCholesky} + * Returns a sparse {@link ComplexCholesky} factorization of this complex sparse matrix. + * @method ComplexSparseMatrix#chol + * @returns {ComplexCholesky} */ chol() { return new ComplexCholesky(this.data.chol()); } /** - * Returns a sparse {@link module:LinearAlgebra.ComplexLU ComplexLU} factorization of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#lu - * @returns {module:LinearAlgebra.ComplexLU} + * Returns a sparse {@link ComplexLU} factorization of this complex sparse matrix. + * @method ComplexSparseMatrix#lu + * @returns {ComplexLU} */ lu() { return new ComplexLU(this.data.lu()); } /** - * Returns a sparse {@link module:LinearAlgebra.ComplexQR ComplexQR} factorization of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#qr - * @returns {module:LinearAlgebra.ComplexQR} + * Returns a sparse {@link ComplexQR} factorization of this complex sparse matrix. + * @method ComplexSparseMatrix#qr + * @returns {ComplexQR} */ qr() { return new ComplexQR(this.data.qr()); @@ -177,8 +179,8 @@ class ComplexSparseMatrix { /** * Returns a dense copy of this complex sparse matrix. - * @method module:LinearAlgebra.ComplexSparseMatrix#toDense - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexSparseMatrix#toDense + * @returns {ComplexDenseMatrix} */ toDense() { return new ComplexDenseMatrix(this.data.toDense()); @@ -186,8 +188,8 @@ class ComplexSparseMatrix { /** * A += B - * @method module:LinearAlgebra.ComplexSparseMatrix#incrementBy - * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix added to this complex + * @method ComplexSparseMatrix#incrementBy + * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex * sparse matrix. */ incrementBy(B) { @@ -196,8 +198,8 @@ class ComplexSparseMatrix { /** * A -= B - * @method module:LinearAlgebra.ComplexSparseMatrix#decrementBy - * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix subtracted from + * @method ComplexSparseMatrix#decrementBy + * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from * this complex sparse matrix. */ decrementBy(B) { @@ -206,8 +208,8 @@ class ComplexSparseMatrix { /** * A *= s - * @method module:LinearAlgebra.ComplexSparseMatrix#scaleBy - * @param {module:LinearAlgebra.Complex} s The complex number this complex sparse matrix is scaled by. + * @method ComplexSparseMatrix#scaleBy + * @param {Complex} s The complex number this complex sparse matrix is scaled by. */ scaleBy(s) { this.data.scaleBy(s.data); @@ -215,10 +217,10 @@ class ComplexSparseMatrix { /** * Returns A + B - * @method module:LinearAlgebra.ComplexSparseMatrix#plus - * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix added to this complex + * @method ComplexSparseMatrix#plus + * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex * sparse matrix. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ plus(B) { return new ComplexSparseMatrix(this.data.plus(B.data)); @@ -226,10 +228,10 @@ class ComplexSparseMatrix { /** * Returns A - B - * @method module:LinearAlgebra.ComplexSparseMatrix#minus - * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix subtracted from this + * @method ComplexSparseMatrix#minus + * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from this * complex sparse matrix. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ minus(B) { return new ComplexSparseMatrix(this.data.minus(B.data)); @@ -237,9 +239,9 @@ class ComplexSparseMatrix { /** * Returns A * s - * @method module:LinearAlgebra.ComplexSparseMatrix#timesComplex - * @param {module:LinearAlgebra.Complex} s The complex number this complex sparse matrix is multiplied by. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @method ComplexSparseMatrix#timesComplex + * @param {Complex} s The complex number this complex sparse matrix is multiplied by. + * @returns {ComplexSparseMatrix} */ timesComplex(s) { return new ComplexSparseMatrix(this.data.timesComplex(s.data)); @@ -247,10 +249,10 @@ class ComplexSparseMatrix { /** * Returns A * X - * @method module:LinearAlgebra.ComplexSparseMatrix#timesDense - * @param {module:LinearAlgebra.ComplexDenseMatrix} X The complex dense matrix this complex sparse matrix + * @method ComplexSparseMatrix#timesDense + * @param {ComplexDenseMatrix} X The complex dense matrix this complex sparse matrix * is multiplied by. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @returns {ComplexDenseMatrix} */ timesDense(X) { return new ComplexDenseMatrix(this.data.timesDense(X.data)); @@ -258,10 +260,10 @@ class ComplexSparseMatrix { /** * Returns A * B - * @method module:LinearAlgebra.ComplexSparseMatrix#timesSparse - * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix this complex sparse matrix + * @method ComplexSparseMatrix#timesSparse + * @param {ComplexSparseMatrix} B The complex sparse matrix this complex sparse matrix * is multiplied by. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} + * @returns {ComplexSparseMatrix} */ timesSparse(B) { return new ComplexSparseMatrix(this.data.timesSparse(B.data)); @@ -270,9 +272,9 @@ class ComplexSparseMatrix { class ComplexTriplet { /** - * This class represents a small structure to hold nonzero entries in a {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. + * This class represents a small structure to hold nonzero entries in a {@link ComplexSparseMatrix}. * Each entry is a triplet of a complex value and the (i, j)th indices, i.e., (x, i, j). - * @constructor module:LinearAlgebra.ComplexTriplet + * @constructor ComplexTriplet * @param {number} m The number of rows in the complex sparse matrix that will be * initialized from this complex triplet. * @param {number} n The number of columns in the complex sparse matrix that will be @@ -292,7 +294,7 @@ class ComplexTriplet { /** * Deletes the emscripten heap allocated data of this sparse matrix. * @ignore - * @method module:LinearAlgebra.ComplexTriplet#delete + * @method ComplexTriplet#delete */ delete() { this.data.delete(); @@ -300,7 +302,7 @@ class ComplexTriplet { /** * A(i, j) += x - * @method module:LinearAlgebra.ComplexTriplet#addEntry + * @method ComplexTriplet#addEntry * @param {number} x The value of the nonzero entry being inserted into this * complex triplet. * @param {number} i The ith row of the complex sparse matrix that will be initialized @@ -316,14 +318,14 @@ class ComplexTriplet { class ComplexCholesky { /** * This class represents a complex Choleksy LL^T factorization of a square and - * positive definite {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. The factorization is computed on the + * positive definite {@link ComplexSparseMatrix}. The factorization is computed on the * first call to solvePositiveDefinite, and is reused in subsequent calls to * solvePositiveDefinite (e.g. when only the right hand side b of the linear system * Ax = b changes) unless the complex sparse matrix itself is altered through * operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the complex Choleksy factorization of a complex * sparse matrix directly from the matrix itself. - * @constructor module:LinearAlgebra.ComplexCholesky + * @constructor ComplexCholesky * @example * // solve the linear system Ax = b, where A is a square * // and complex positive definite sparse matrix @@ -343,9 +345,9 @@ class ComplexCholesky { /** * Solves the linear system Ax = b, where A is a square and complex positive * definite sparse matrix. - * @method module:LinearAlgebra.ComplexCholesky#solvePositiveDefinite - * @param {module:LinearAlgebra.ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexCholesky#solvePositiveDefinite + * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. + * @returns {ComplexDenseMatrix} */ solvePositiveDefinite(b) { return new ComplexDenseMatrix(this.data.solvePositiveDefinite(b.data)); @@ -354,14 +356,14 @@ class ComplexCholesky { class ComplexLU { /** - * This class represents a complex LU factorization of a square {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. + * This class represents a complex LU factorization of a square {@link ComplexSparseMatrix}. * The factorization is computed on the first call to solveSquare, and is reused * in subsequent calls to solveSquare (e.g. when only the right hand side b * of the linear system Ax = b changes) unless the complex sparse matrix itself * is altered through operations such as *=, += and -=. Do not use the constructor * to initialize this class, instead access the complex LU factorization * of a complex sparse matrix directly from the matrix itself. - * @constructor module:LinearAlgebra.ComplexLU + * @constructor ComplexLU * @example * // solve the linear system Ax = b, where A is a square and complex sparse matrix * let A = ComplexSparseMatrix.identity(5, 5); @@ -379,9 +381,9 @@ class ComplexLU { /** * Solves the linear system Ax = b, where A is a square and complex sparse matrix. - * @method module:LinearAlgebra.ComplexLU#solveSquare - * @param {module:LinearAlgebra.ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexLU#solveSquare + * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. + * @returns {ComplexDenseMatrix} */ solveSquare(b) { return new ComplexDenseMatrix(this.data.solveSquare(b.data)); @@ -390,14 +392,14 @@ class ComplexLU { class ComplexQR { /** - * This class represents a complex QR factorization of a rectangular {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. + * This class represents a complex QR factorization of a rectangular {@link ComplexSparseMatrix}. * The factorization is computed on the first call to solve, and is reused in * subsequent calls to solve (e.g. when only the right hand side b of the linear * system Ax = b changes) unless the complex sparse matrix itself is altered * through operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the complex QR factorization of a complex sparse * matrix directly from the matrix itself. - * @constructor module:LinearAlgebra.ComplexQR + * @constructor ComplexQR * @example * // solve the linear system Ax = b, where A is a rectangular and complex sparse matrix * let A = ComplexSparseMatrix.identity(5, 5); @@ -406,7 +408,7 @@ class ComplexQR { * let qr = A.qr(); * let x = qr.solve(b); * - * b.scaleBy(new Complex(5, 0)); + * b.scaleBy(Complex(5, 0)); * x = qr.solve(b); // factorization is reused */ constructor(data) { @@ -415,11 +417,13 @@ class ComplexQR { /** * Solves the linear system Ax = b, where A is a rectangular and complex sparse matrix. - * @method module:LinearAlgebra.ComplexQR#solve - * @param {module:LinearAlgebra.ComplexDenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} + * @method ComplexQR#solve + * @param {ComplexDenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {ComplexDenseMatrix} */ solve(b) { return new ComplexDenseMatrix(this.data.solve(b.data)); } } + +export { ComplexSparseMatrix, ComplexTriplet }; \ No newline at end of file diff --git a/linear-algebra/complex.js b/linear-algebra/complex.js index 9ba58e3..8bbae15 100644 --- a/linear-algebra/complex.js +++ b/linear-algebra/complex.js @@ -1,9 +1,10 @@ -"use strict"; +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; class Complex { /** * This class represents a complex number a + bi. - * @constructor module:LinearAlgebra.Complex + * @constructor Complex * @param {number} re The real component of this complex number. * @param {number} im The imaginary component of this complex number. */ @@ -14,7 +15,7 @@ class Complex { /** * Deletes the emscripten heap allocated data of this complex number. - * @method module:LinearAlgebra.Complex#delete + * @method Complex#delete * @ignore */ delete() { @@ -23,7 +24,7 @@ class Complex { /** * The real component of this complex number. - * @member module:LinearAlgebra.Complex#re + * @member Complex#re * @type {number} */ get re() { @@ -32,7 +33,7 @@ class Complex { /** * The imaginary component of this complex number. - * @member module:LinearAlgebra.Complex#im + * @member Complex#im * @type {number} */ get im() { @@ -41,7 +42,7 @@ class Complex { /** * Computes the phase angle of this complex number. - * @method module:LinearAlgebra.Complex#arg + * @method Complex#arg * @returns {number} */ arg() { @@ -50,7 +51,7 @@ class Complex { /** * Computes the norm of this complex number. - * @method module:LinearAlgebra.Complex#norm + * @method Complex#norm * @returns {number} */ norm() { @@ -59,7 +60,7 @@ class Complex { /** * Computes the squared norm of this complex number. - * @method module:LinearAlgebra.Complex#norm2 + * @method Complex#norm2 * @returns {number} */ norm2() { @@ -68,8 +69,8 @@ class Complex { /** * Computes a - bi - * @method module:LinearAlgebra.Complex#conjugate - * @returns {module:LinearAlgebra.Complex} + * @method Complex#conjugate + * @returns {Complex} */ conjugate() { return new Complex(this.re, -this.im); @@ -77,8 +78,8 @@ class Complex { /** * Computes (a + bi)^-1 - * @method module:LinearAlgebra.Complex#inverse - * @returns {module:LinearAlgebra.Complex} + * @method Complex#inverse + * @returns {Complex} */ inverse() { return this.conjugate().overReal(this.norm2()); @@ -87,8 +88,8 @@ class Complex { /** * Computes the polar form ae^(iθ), where a is the norm and θ is the * phase angle of this complex number. - * @method module:LinearAlgebra.Complex#polar - * @returns {module:LinearAlgebra.Complex} + * @method Complex#polar + * @returns {Complex} */ polar() { let a = this.norm(); @@ -99,8 +100,8 @@ class Complex { /** * Exponentiates this complex number. - * @method module:LinearAlgebra.Complex#exp - * @returns {module:LinearAlgebra.Complex} + * @method Complex#exp + * @returns {Complex} */ exp() { let a = Math.exp(this.re); @@ -111,9 +112,9 @@ class Complex { /** * Returns u + v - * @method module:LinearAlgebra.Complex#plus - * @param {module:LinearAlgebra.Complex} v The complex number added to this complex number. - * @return {module:LinearAlgebra.Complex} + * @method Complex#plus + * @param {Complex} v The complex number added to this complex number. + * @return {Complex} */ plus(v) { return new Complex(this.re + v.re, this.im + v.im); @@ -121,9 +122,9 @@ class Complex { /** * Returns u - v - * @method module:LinearAlgebra.Complex#minus - * @param {module:LinearAlgebra.Complex} v The complex number subtracted from this complex number. - * @return {module:LinearAlgebra.Complex} + * @method Complex#minus + * @param {Complex} v The complex number subtracted from this complex number. + * @return {Complex} */ minus(v) { return new Complex(this.re - v.re, this.im - v.im); @@ -131,9 +132,9 @@ class Complex { /** * Returns u * s - * @method module:LinearAlgebra.Complex#timesReal + * @method Complex#timesReal * @param {number} s The number this complex number is multiplied by. - * @return {module:LinearAlgebra.Complex} + * @return {Complex} */ timesReal(s) { return new Complex(this.re * s, this.im * s); @@ -141,9 +142,9 @@ class Complex { /** * Returns u / s - * @method module:LinearAlgebra.Complex#overReal + * @method Complex#overReal * @param {number} s The number this complex number is divided by. - * @return {module:LinearAlgebra.Complex} + * @return {Complex} */ overReal(s) { return this.timesReal(1 / s); @@ -151,9 +152,9 @@ class Complex { /** * Returns u * v - * @method module:LinearAlgebra.Complex#timesComplex - * @param {module:LinearAlgebra.Complex} v The complex number this complex number is multiplied by. - * @return {module:LinearAlgebra.Complex} + * @method Complex#timesComplex + * @param {Complex} v The complex number this complex number is multiplied by. + * @return {Complex} */ timesComplex(v) { let a = this.re; @@ -169,11 +170,13 @@ class Complex { /** * Returns u / v - * @method module:LinearAlgebra.Complex#overComplex - * @param {module:LinearAlgebra.Complex} v The complex number this complex number is divided by. - * @return {module:LinearAlgebra.Complex} + * @method Complex#overComplex + * @param {Complex} v The complex number this complex number is divided by. + * @return {Complex} */ overComplex(v) { return this.timesComplex(v.inverse()); } } + +export default Complex; \ No newline at end of file diff --git a/linear-algebra/dense-matrix.js b/linear-algebra/dense-matrix.js index 0d709f4..494f98e 100644 --- a/linear-algebra/dense-matrix.js +++ b/linear-algebra/dense-matrix.js @@ -1,4 +1,5 @@ -"use strict"; +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; class DenseMatrix { /** @@ -6,7 +7,7 @@ class DenseMatrix { * zero-valued entries, is stored explicitly. Do not create a DenseMatrix * from its constructor, instead use static factory methods such as zeros, * identity, ones, constant and random. - * @constructor module:LinearAlgebra.DenseMatrix + * @constructor DenseMatrix * @example * let A = DenseMatrix.zeros(20, 5); * let B = DenseMatrix.identity(10, 10); @@ -22,7 +23,7 @@ class DenseMatrix { /** * Deletes the emscripten heap allocated data of this dense matrix. * @ignore - * @method module:LinearAlgebra.DenseMatrix#delete + * @method DenseMatrix#delete */ delete() { this.data.delete(); @@ -30,10 +31,10 @@ class DenseMatrix { /** * Initializes a m by n matrix of zeros. - * @method module:LinearAlgebra.DenseMatrix.zeros + * @method DenseMatrix.zeros * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ static zeros(m, n = 1) { return new DenseMatrix(new Module.DenseMatrix(m, n)); @@ -41,10 +42,10 @@ class DenseMatrix { /** * Initializes a m by n identity matrix. - * @method module:LinearAlgebra.DenseMatrix.identity + * @method DenseMatrix.identity * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ static identity(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.identity(m, n)); @@ -52,10 +53,10 @@ class DenseMatrix { /** * Initializes a m by n matrix of ones. - * @method module:LinearAlgebra.DenseMatrix.ones + * @method DenseMatrix.ones * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ static ones(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.ones(m, n)); @@ -63,11 +64,11 @@ class DenseMatrix { /** * Initializes a m by n constant matrix. - * @method module:LinearAlgebra.DenseMatrix.constant + * @method DenseMatrix.constant * @param {number} x The constant value stored in every entry of this dense matrix. * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ static constant(x, m, n = 1) { return new DenseMatrix(Module.DenseMatrix.constant(m, n, x)); @@ -75,10 +76,10 @@ class DenseMatrix { /** * Initializes a m by n random matrix. - * @method module:LinearAlgebra.DenseMatrix.random + * @method DenseMatrix.random * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ static random(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.random(m, n)); @@ -86,8 +87,8 @@ class DenseMatrix { /** * Returns the transpose of this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#transpose - * @returns {module:LinearAlgebra.DenseMatrix} + * @method DenseMatrix#transpose + * @returns {DenseMatrix} */ transpose() { return new DenseMatrix(this.data.transpose()); @@ -95,7 +96,7 @@ class DenseMatrix { /** * Returns the number of rows in this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#nRows + * @method DenseMatrix#nRows * @returns {number} */ nRows() { @@ -104,7 +105,7 @@ class DenseMatrix { /** * Returns the number of columns in this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#nCols + * @method DenseMatrix#nCols * @returns {number} */ nCols() { @@ -113,7 +114,7 @@ class DenseMatrix { /** * Computes the lInfinity, l1 or l2 norm of this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#norm + * @method DenseMatrix#norm * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 * and l2 norm if n = 2. * @returns {number} @@ -124,7 +125,7 @@ class DenseMatrix { /** * Returns the rank of this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#rank + * @method DenseMatrix#rank * @returns {number} */ rank() { @@ -133,7 +134,7 @@ class DenseMatrix { /** * Sums all the entries in this dense matrix. - * @method module:LinearAlgebra.DenseMatrix#sum + * @method DenseMatrix#sum * @returns {number} */ sum() { @@ -143,12 +144,12 @@ class DenseMatrix { /** * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method module:LinearAlgebra.DenseMatrix#subMatrix + * @method DenseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ subMatrix(r0, r1, c0 = 0, c1 = 1) { return new DenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); @@ -156,8 +157,8 @@ class DenseMatrix { /** * A += B - * @method module:LinearAlgebra.DenseMatrix#incrementBy - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix added to this dense matrix. + * @method DenseMatrix#incrementBy + * @param {DenseMatrix} B The dense matrix added to this dense matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -165,8 +166,8 @@ class DenseMatrix { /** * A -= B - * @method module:LinearAlgebra.DenseMatrix#decrementBy - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix subtracted from this dense matrix. + * @method DenseMatrix#decrementBy + * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -174,7 +175,7 @@ class DenseMatrix { /** * A *= s - * @method module:LinearAlgebra.DenseMatrix#scaleBy + * @method DenseMatrix#scaleBy * @param {number} s The number this dense matrix is scaled by. */ scaleBy(s) { @@ -183,9 +184,9 @@ class DenseMatrix { /** * Returns A + B - * @method module:LinearAlgebra.DenseMatrix#plus - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix added to this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method DenseMatrix#plus + * @param {DenseMatrix} B The dense matrix added to this dense matrix. + * @returns {DenseMatrix} */ plus(B) { return new DenseMatrix(this.data.plus(B.data)); @@ -193,9 +194,9 @@ class DenseMatrix { /** * Returns A - B - * @method module:LinearAlgebra.DenseMatrix#minus - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix subtracted from this dense matrix. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method DenseMatrix#minus + * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. + * @returns {DenseMatrix} */ minus(B) { return new DenseMatrix(this.data.minus(B.data)); @@ -203,9 +204,9 @@ class DenseMatrix { /** * Returns A * s - * @method module:LinearAlgebra.DenseMatrix#timesReal + * @method DenseMatrix#timesReal * @param {number} s The number this dense matrix is multiplied by. - * @returns {module:LinearAlgebra.DenseMatrix} + * @returns {DenseMatrix} */ timesReal(s) { return new DenseMatrix(this.data.timesReal(s)); @@ -213,9 +214,9 @@ class DenseMatrix { /** * Returns A * B - * @method module:LinearAlgebra.DenseMatrix#timesDense - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix this dense matrix is multiplied by. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method DenseMatrix#timesDense + * @param {DenseMatrix} B The dense matrix this dense matrix is multiplied by. + * @returns {DenseMatrix} */ timesDense(B) { return new DenseMatrix(this.data.timesDense(B.data)); @@ -223,8 +224,8 @@ class DenseMatrix { /** * Returns -A - * @method module:LinearAlgebra.DenseMatrix#negated - * @return {module:LinearAlgebra.DenseMatrix} + * @method DenseMatrix#negated + * @return {DenseMatrix} */ negated() { return new DenseMatrix(this.data.negated()); @@ -232,7 +233,7 @@ class DenseMatrix { /** * Returns A(i, j) - * @method module:LinearAlgebra.DenseMatrix#get + * @method DenseMatrix#get * @param {number} i The ith row of this dense matrix. * @param {number} j The jth column of this dense matrix. * @return {number} @@ -243,7 +244,7 @@ class DenseMatrix { /** * A(i, j) = x - * @method module:LinearAlgebra.DenseMatrix#set + * @method DenseMatrix#set * @param {number} x The real value the (i, j)th entry of this dense matrix is set to. * @param {number} i The ith row of this dense matrix. * @param {number} j The jth column of this dense matrix. @@ -254,10 +255,10 @@ class DenseMatrix { /** * Concatenates two dense matrices horizontally. - * @method module:LinearAlgebra.DenseMatrix#hcat - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix that is concatenated horizontally + * @method DenseMatrix#hcat + * @param {DenseMatrix} B The dense matrix that is concatenated horizontally * with this dense matrix. - * @return {module:LinearAlgebra.DenseMatrix} + * @return {DenseMatrix} */ hcat(B) { return new DenseMatrix(this.data.hcat(B.data)); @@ -265,12 +266,14 @@ class DenseMatrix { /** * Concatenates two dense matrices vertically. - * @method module:LinearAlgebra.DenseMatrix#vcat - * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix that is concatenated vertically + * @method DenseMatrix#vcat + * @param {DenseMatrix} B The dense matrix that is concatenated vertically * with this dense matrix. - * @return {module:LinearAlgebra.DenseMatrix} + * @return {DenseMatrix} */ vcat(B) { return new DenseMatrix(this.data.vcat(B.data)); } } + +export default DenseMatrix; \ No newline at end of file diff --git a/linear-algebra/emscripten-memory-manager.js b/linear-algebra/emscripten-memory-manager.js index 6c45b29..16b0e65 100644 --- a/linear-algebra/emscripten-memory-manager.js +++ b/linear-algebra/emscripten-memory-manager.js @@ -1,18 +1,16 @@ -"use strict"; - class EmscriptenMemoryManager { /** * This class serves as a semi automatic memory manager/garbage collector * for objects that internally store data and perform operations on the {@link http://emscripten.org emscripten} * heap, and hence cannot be freed by the Javascript garbage collector. These - * include {@link module:LinearAlgebra.DenseMatrix DenseMatrix}, {@link module:LinearAlgebra.SparseMatrix SparseMatrix}, {@link module:LinearAlgebra.Triplet Triplet}, {@link module:LinearAlgebra.Complex Complex}, {@link module:LinearAlgebra.ComplexDenseMatrix ComplexDenseMatrix}, - * {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix} and {@link module:LinearAlgebra.ComplexTriplet ComplexTriplet}. Since operations involving the above + * include {@link DenseMatrix}, {@link SparseMatrix}, {@link Triplet}, {@link Complex}, {@link ComplexDenseMatrix}, + * {@link ComplexSparseMatrix} and {@link ComplexTriplet}. Since operations involving the above * matrices and linear algebra entities are frequent and generate a lot of intermediate * variables, EmscriptenMemoryManager automatically tracks all objects that are * allocated on the emscripten heap to ease the burden of manual memory management. * The user is required to inform the EmscriptenMemoryManager about when it should * clear the heap and which objects it should *not* delete while doing so. - * @constructor module:LinearAlgebra.EmscriptenMemoryManager + * @constructor EmscriptenMemoryManager * @property {Object[]} objectList Array of objects allocated on the emscripten heap. * @example * let memoryManager = new EmscriptenMemoryManager(); @@ -31,7 +29,7 @@ class EmscriptenMemoryManager { /** * Deletes all objects in this memory manager's list of emscripten heap allocated * objects except those in the array passed to this method. - * @method module:LinearAlgebra.EmscriptenMemoryManager#deleteExcept + * @method EmscriptenMemoryManager#deleteExcept * @param {Object[]} exceptList Array of objects allocated on the emscripten heap * that should not to be deleted. */ @@ -53,3 +51,5 @@ class EmscriptenMemoryManager { this.objectList = exceptList; } } + +module.exports = new EmscriptenMemoryManager() \ No newline at end of file diff --git a/linear-algebra/linear-algebra-asm.js b/linear-algebra/linear-algebra-asm.js index 1e91bf0..f16b84d 100644 --- a/linear-algebra/linear-algebra-asm.js +++ b/linear-algebra/linear-algebra-asm.js @@ -21,6 +21,6 @@ var Jc=[ZF,zv,Fv,Aw,Bw,Kw,Lw,ZF];var Kc=[_F,Sw,Yw,_F];var Lc=[$F,rB,AB,TB,Wk,bl, // EMSCRIPTEN_END_ASM (Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module["stackSave"]=asm["stackSave"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var __GLOBAL__sub_I_embind_cpp=Module["__GLOBAL__sub_I_embind_cpp"]=asm["__GLOBAL__sub_I_embind_cpp"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=asm["_pthread_mutex_unlock"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=asm["_pthread_cond_broadcast"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _memmove=Module["_memmove"]=asm["_memmove"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=asm["_pthread_mutex_lock"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memset=Module["_memset"]=asm["_memset"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidd=Module["dynCall_iidd"]=asm["dynCall_iidd"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_iiiid=Module["dynCall_iiiid"]=asm["dynCall_iiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];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_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;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"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){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(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}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() - +export default Module; diff --git a/linear-algebra/linear-algebra.js b/linear-algebra/linear-algebra.js new file mode 100644 index 0000000..ccbd85d --- /dev/null +++ b/linear-algebra/linear-algebra.js @@ -0,0 +1,19 @@ +import Vector from './vector.js'; +import memoryManager from './emscripten-memory-manager.js'; +import Complex from './complex.js'; +import DenseMatrix from './dense-matrix.js'; +import ComplexDenseMatrix from' ./complex-dense-matrix.js'; +import { SparseMatrix, Triplet } from './sparse-matrix.js'; +import { ComplexSparseMatrix, ComplexTriplet } from './complex-sparse-matrix.js'; + +export default { + Vector, + memoryManager, + Complex, + DenseMatrix, + SparseMatrix, + Triplet, + ComplexDenseMatrix, + ComplexSparseMatrix, + ComplexTriplet +}; \ No newline at end of file diff --git a/linear-algebra/sparse-matrix.js b/linear-algebra/sparse-matrix.js index cdfe7cd..1a656a0 100644 --- a/linear-algebra/sparse-matrix.js +++ b/linear-algebra/sparse-matrix.js @@ -1,11 +1,13 @@ -"use strict"; +import Module from './linear-algebra-asm.js'; +import memoryManager from './emscripten-memory-manager.js'; +import DenseMatrix from './dense-matrix.js'; class SparseMatrix { /** * This class represents a m by n real matrix where only nonzero entries * are stored explicitly. Do not create a SparseMatrix from its constructor, * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor module:LinearAlgebra.SparseMatrix + * @constructor SparseMatrix * @example * let T = new Triplet(100, 100); * T.addEntry(3.4, 11, 43); @@ -25,18 +27,18 @@ class SparseMatrix { /** * Deletes the emscripten heap allocated data of this sparse matrix. * @ignore - * @method module:LinearAlgebra.SparseMatrix#delete + * @method SparseMatrix#delete */ delete() { this.data.delete(); } /** - * Initializes a sparse matrix from a {@link module:LinearAlgebra.Triplet Triplet} object. - * @method module:LinearAlgebra.SparseMatrix.fromTriplet - * @param {module:LinearAlgebra.Triplet} T A triplet object containing only the nonzero entries that + * Initializes a sparse matrix from a {@link Triplet} object. + * @method SparseMatrix.fromTriplet + * @param {Triplet} T A triplet object containing only the nonzero entries that * need to be stored in this sparse matrix. - * @returns {module:LinearAlgebra.SparseMatrix} + * @returns {SparseMatrix} */ static fromTriplet(T) { return new SparseMatrix(new Module.SparseMatrix(T.data)); @@ -44,10 +46,10 @@ class SparseMatrix { /** * Initializes a m by n sparse identity matrix. - * @method module:LinearAlgebra.SparseMatrix.identity + * @method SparseMatrix.identity * @param {number} m The number of rows in this sparse matrix. * @param {number} n The number of columns in this sparse matrix. - * @returns {module:LinearAlgebra.SparseMatrix} + * @returns {SparseMatrix} */ static identity(m, n) { return new SparseMatrix(Module.SparseMatrix.identity(m, n)); @@ -55,10 +57,10 @@ class SparseMatrix { /** * Initializes a sparse diagonal matrix. - * @method module:LinearAlgebra.SparseMatrix.diag - * @param {module:LinearAlgebra.DenseMatrix} d The dense vector (d.nCols() == 1) used to initialize + * @method SparseMatrix.diag + * @param {DenseMatrix} d The dense vector (d.nCols() == 1) used to initialize * this sparse diagonal matrix. - * @returns {module:LinearAlgebra.SparseMatrix} + * @returns {SparseMatrix} */ static diag(d) { return new SparseMatrix(Module.SparseMatrix.diag(d.data)); @@ -66,8 +68,8 @@ class SparseMatrix { /** * Returns the transpose of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#transpose - * @returns {module:LinearAlgebra.SparseMatrix} + * @method SparseMatrix#transpose + * @returns {SparseMatrix} */ transpose() { return new SparseMatrix(this.data.transpose()); @@ -75,8 +77,8 @@ class SparseMatrix { /** * Returns the inverse of this diagonal sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#invertDiagonal - * @returns {module:LinearAlgebra.SparseMatrix} + * @method SparseMatrix#invertDiagonal + * @returns {SparseMatrix} */ invertDiagonal() { let N = this.nRows(); @@ -91,7 +93,7 @@ class SparseMatrix { /** * Returns the number of rows in this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#nRows + * @method SparseMatrix#nRows * @returns {number} */ nRows() { @@ -100,7 +102,7 @@ class SparseMatrix { /** * Returns the number of columns in this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#nCols + * @method SparseMatrix#nCols * @returns {number} */ nCols() { @@ -109,7 +111,7 @@ class SparseMatrix { /** * Returns the number of nonzero entries in this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#nnz + * @method SparseMatrix#nnz * @returns {number} */ nnz() { @@ -118,7 +120,7 @@ class SparseMatrix { /** * Computes the frobenius norm of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#frobeniusNorm + * @method SparseMatrix#frobeniusNorm * @returns {number} */ frobeniusNorm() { @@ -128,39 +130,39 @@ class SparseMatrix { /** * Extracts a sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method module:LinearAlgebra.SparseMatrix#subMatrix + * @method SparseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {module:LinearAlgebra.SparseMatrix} + * @returns {SparseMatrix} */ subMatrix(r0, r1, c0, c1) { return new SparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); } /** - * Returns a sparse {@link module:LinearAlgebra.Cholesky Cholesky} factorization of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#chol - * @returns {module:LinearAlgebra.Cholesky} + * Returns a sparse {@link Cholesky} factorization of this sparse matrix. + * @method SparseMatrix#chol + * @returns {Cholesky} */ chol() { return new Cholesky(this.data.chol()); } /** - * Returns a sparse {@link module:LinearAlgebra.LU LU} factorization of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#lu - * @returns {module:LinearAlgebra.LU} + * Returns a sparse {@link LU} factorization of this sparse matrix. + * @method SparseMatrix#lu + * @returns {LU} */ lu() { return new LU(this.data.lu()); } /** - * Returns a sparse {@link module:LinearAlgebra.QR QR} factorization of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#qr - * @returns {module:LinearAlgebra.QR} + * Returns a sparse {@link QR} factorization of this sparse matrix. + * @method SparseMatrix#qr + * @returns {QR} */ qr() { return new QR(this.data.qr()); @@ -168,8 +170,8 @@ class SparseMatrix { /** * Returns a dense copy of this sparse matrix. - * @method module:LinearAlgebra.SparseMatrix#toDense - * @returns {module:LinearAlgebra.DenseMatrix} + * @method SparseMatrix#toDense + * @returns {DenseMatrix} */ toDense() { return new DenseMatrix(this.data.toDense()); @@ -177,8 +179,8 @@ class SparseMatrix { /** * A += B - * @method module:LinearAlgebra.SparseMatrix#incrementBy - * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix added to this sparse matrix. + * @method SparseMatrix#incrementBy + * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -186,8 +188,8 @@ class SparseMatrix { /** * A -= B - * @method module:LinearAlgebra.SparseMatrix#decrementBy - * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix subtracted from this sparse matrix. + * @method SparseMatrix#decrementBy + * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -195,7 +197,7 @@ class SparseMatrix { /** * A *= s - * @method module:LinearAlgebra.SparseMatrix#scaleBy + * @method SparseMatrix#scaleBy * @param {number} s The number this sparse matrix is scaled by. */ scaleBy(s) { @@ -204,9 +206,9 @@ class SparseMatrix { /** * Returns A + B - * @method module:LinearAlgebra.SparseMatrix#plus - * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix added to this sparse matrix. - * @returns {module:LinearAlgebra.SparseMatrix} + * @method SparseMatrix#plus + * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. + * @returns {SparseMatrix} */ plus(B) { return new SparseMatrix(this.data.plus(B.data)); @@ -214,9 +216,9 @@ class SparseMatrix { /** * Returns A - B - * @method module:LinearAlgebra.SparseMatrix#minus - * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix subtracted from this sparse matrix. - * @returns {module:LinearAlgebra.SparseMatrix} + * @method SparseMatrix#minus + * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. + * @returns {SparseMatrix} */ minus(B) { return new SparseMatrix(this.data.minus(B.data)); @@ -224,9 +226,9 @@ class SparseMatrix { /** * Returns A * s - * @method module:LinearAlgebra.SparseMatrix#timesReal + * @method SparseMatrix#timesReal * @param {number} s The number this sparse matrix is multiplied by. - * @returns {module:LinearAlgebra.SparseMatrix} + * @returns {SparseMatrix} */ timesReal(s) { return new SparseMatrix(this.data.timesReal(s)); @@ -234,9 +236,9 @@ class SparseMatrix { /** * Returns A * X - * @method module:LinearAlgebra.SparseMatrix#timesDense - * @param {module:LinearAlgebra.DenseMatrix} X The dense matrix this sparse matrix is multiplied by. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method SparseMatrix#timesDense + * @param {DenseMatrix} X The dense matrix this sparse matrix is multiplied by. + * @returns {DenseMatrix} */ timesDense(X) { return new DenseMatrix(this.data.timesDense(X.data)); @@ -244,9 +246,9 @@ class SparseMatrix { /** * Returns A * B - * @method module:LinearAlgebra.SparseMatrix#timesSparse - * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix this sparse matrix is multiplied by. - * @returns {module:LinearAlgebra.SparseMatrix} + * @method SparseMatrix#timesSparse + * @param {SparseMatrix} B The sparse matrix this sparse matrix is multiplied by. + * @returns {SparseMatrix} */ timesSparse(B) { return new SparseMatrix(this.data.timesSparse(B.data)); @@ -255,9 +257,9 @@ class SparseMatrix { class Triplet { /** - * This class represents a small structure to hold nonzero entries in a {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. + * This class represents a small structure to hold nonzero entries in a {@link SparseMatrix}. * Each entry is a triplet of a value and the (i, j)th indices, i.e., (x, i, j). - * @constructor module:LinearAlgebra.Triplet + * @constructor Triplet * @param {number} m The number of rows in the sparse matrix that will be initialized * from this triplet. * @param {number} n The number of columns in the sparse matrix that will be initialized @@ -276,7 +278,7 @@ class Triplet { /** * Deletes the emscripten heap allocated data of this sparse matrix. - * @method module:LinearAlgebra.Triplet#delete + * @method Triplet#delete * @ignore */ delete() { @@ -285,7 +287,7 @@ class Triplet { /** * A(i, j) += x - * @method module:LinearAlgebra.Triplet#addEntry + * @method Triplet#addEntry * @param {number} x The value of the nonzero entry being inserted into this triplet. * @param {number} i The ith row of the sparse matrix that will be initialized * from this triplet. @@ -300,13 +302,13 @@ class Triplet { class Cholesky { /** * This class represents a Choleksy LL^T factorization of a square positive definite - * {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. The factorization is computed on the first call to solvePositiveDefinite, + * {@link SparseMatrix}. The factorization is computed on the first call to solvePositiveDefinite, * and is reused in subsequent calls to solvePositiveDefinite (e.g. when only the * right hand side b of the linear system Ax = b changes) unless the sparse matrix * itself is altered through operations such as *=, += and -=. Do not use the constructor * to initialize this class, instead access the Choleksy factorization of a sparse * matrix directly from the matrix itself. - * @constructor module:LinearAlgebra.Cholesky + * @constructor Cholesky * @example * // solve the linear system Ax = b, where A is a square positive definite sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -324,9 +326,9 @@ class Cholesky { /** * Solves the linear system Ax = b, where A is a square positive definite sparse matrix. - * @method module:LinearAlgebra.Cholesky#solvePositiveDefinite - * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method Cholesky#solvePositiveDefinite + * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {DenseMatrix} */ solvePositiveDefinite(b) { return new DenseMatrix(this.data.solvePositiveDefinite(b.data)); @@ -335,13 +337,13 @@ class Cholesky { class LU { /** - * This class represents a LU factorization of a square {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. The factorization + * This class represents a LU factorization of a square {@link SparseMatrix}. The factorization * is computed on the first call to solveSquare, and is reused in subsequent calls * to solveSquare (e.g. when only the right hand side b of the linear system Ax = b * changes) unless the sparse matrix itself is altered through operations such as * *=, += and -=. Do not use the constructor to initialize this class, instead * access the LU factorization of a sparse matrix directly from the matrix itself. - * @constructor module:LinearAlgebra.LU + * @constructor LU * @example * // solve the linear system Ax = b, where A is a square sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -359,9 +361,9 @@ class LU { /** * Solves the linear system Ax = b, where A is a square sparse matrix. - * @method module:LinearAlgebra.LU#solveSquare - * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method LU#solveSquare + * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {DenseMatrix} */ solveSquare(b) { return new DenseMatrix(this.data.solveSquare(b.data)); @@ -370,14 +372,14 @@ class LU { class QR { /** - * This class represents a QR factorization of a rectangular {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. + * This class represents a QR factorization of a rectangular {@link SparseMatrix}. * The factorization is computed on the first call to solve, and is reused in * subsequent calls to solve (e.g. when only the right hand side b of the linear * system Ax = b changes) unless the sparse matrix itself is altered through * operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the QR factorization of a sparse matrix directly * from the matrix itself. - * @constructor module:LinearAlgebra.QR + * @constructor QR * @example * // solve the linear system Ax = b, where A is a rectangular sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -395,11 +397,13 @@ class QR { /** * Solves the linear system Ax = b, where A is a rectangular sparse matrix. - * @method module:LinearAlgebra.QR#solve - * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {module:LinearAlgebra.DenseMatrix} + * @method QR#solve + * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {DenseMatrix} */ solve(b) { return new DenseMatrix(this.data.solve(b.data)); } } + +export { SparseMatrix, Triplet }; \ No newline at end of file diff --git a/linear-algebra/vector.js b/linear-algebra/vector.js index 2c9a53d..17b0036 100644 --- a/linear-algebra/vector.js +++ b/linear-algebra/vector.js @@ -1,5 +1,3 @@ -"use strict"; - /** * This module contains optimized linear algebra routines for sparse and dense matrices * in pure Javascript. Support for the former includes methods to compute {@link https://en.wikipedia.org/wiki/Cholesky_decomposition Cholesky}, @@ -16,7 +14,7 @@ class Vector { /** * This class represents an element of Euclidean 3-space, along with all the usual * vector space operations (addition, multiplication by scalars, etc.). - * @constructor module:LinearAlgebra.Vector + * @constructor Vector * @property {number} x The x component of this vector. Default value is 0. * @property {number} y The y component of this vector. Default value is 0. * @property {number} z The z component of this vector. Default value is 0. @@ -29,7 +27,7 @@ class Vector { /** * Computes the Euclidean length of this vector. - * @method module:LinearAlgebra.Vector#norm + * @method Vector#norm * @returns {number} */ norm() { @@ -38,7 +36,7 @@ class Vector { /** * Computes the Euclidean length squared of this vector. - * @method module:LinearAlgebra.Vector#norm2 + * @method Vector#norm2 * @returns {number} */ norm2() { @@ -47,7 +45,7 @@ class Vector { /** * Divides this vector by its Euclidean length. - * @method module:LinearAlgebra.Vector#normalize + * @method Vector#normalize */ normalize() { let n = this.norm(); @@ -58,8 +56,8 @@ class Vector { /** * Returns a normalized copy of this vector. - * @method module:LinearAlgebra.Vector#unit - * @returns {module:LinearAlgebra.Vector} + * @method Vector#unit + * @returns {Vector} */ unit() { let n = this.norm(); @@ -72,7 +70,7 @@ class Vector { /** * Checks whether this vector's components are finite. - * @method module:LinearAlgebra.Vector#isValid + * @method Vector#isValid * @returns {boolean} */ isValid() { @@ -82,8 +80,8 @@ class Vector { /** * u += v - * @method module:LinearAlgebra.Vector#incrementBy - * @param {module:LinearAlgebra.Vector} v The vector added to this vector. + * @method Vector#incrementBy + * @param {Vector} v The vector added to this vector. */ incrementBy(v) { this.x += v.x; @@ -93,8 +91,8 @@ class Vector { /** * u -= v - * @method module:LinearAlgebra.Vector#decrementBy - * @param {module:LinearAlgebra.Vector} v The vector subtracted from this vector. + * @method Vector#decrementBy + * @param {Vector} v The vector subtracted from this vector. */ decrementBy(v) { this.x -= v.x; @@ -104,7 +102,7 @@ class Vector { /** * u *= s - * @method module:LinearAlgebra.Vector#scaleBy + * @method Vector#scaleBy * @param {number} s The number this vector is scaled by. */ scaleBy(s) { @@ -115,7 +113,7 @@ class Vector { /** * u /= s - * @method module:LinearAlgebra.Vector#divideBy + * @method Vector#divideBy * @param {number} s The number this vector is divided by. */ divideBy(s) { @@ -124,9 +122,9 @@ class Vector { /** * Returns u + v - * @method module:LinearAlgebra.Vector#plus - * @param {module:LinearAlgebra.Vector} v The vector added to this vector. - * @return {module:LinearAlgebra.Vector} + * @method Vector#plus + * @param {Vector} v The vector added to this vector. + * @return {Vector} */ plus(v) { return new Vector(this.x + v.x, this.y + v.y, this.z + v.z); @@ -134,9 +132,9 @@ class Vector { /** * Returns u - v - * @method module:LinearAlgebra.Vector#minus - * @param {module:LinearAlgebra.Vector} v The vector subtracted from this vector. - * @return {module:LinearAlgebra.Vector} + * @method Vector#minus + * @param {Vector} v The vector subtracted from this vector. + * @return {Vector} */ minus(v) { return new Vector(this.x - v.x, this.y - v.y, this.z - v.z); @@ -144,9 +142,9 @@ class Vector { /** * Returns u * s - * @method module:LinearAlgebra.Vector#times + * @method Vector#times * @param {number} s The number this vector is multiplied by. - * @return {module:LinearAlgebra.Vector} + * @return {Vector} */ times(s) { return new Vector(this.x * s, this.y * s, this.z * s); @@ -154,9 +152,9 @@ class Vector { /** * Returns u / s - * @method module:LinearAlgebra.Vector#over + * @method Vector#over * @param {number} s The number this vector is divided by. - * @return {module:LinearAlgebra.Vector} + * @return {Vector} */ over(s) { return this.times(1 / s); @@ -164,8 +162,8 @@ class Vector { /** * Returns -u - * @method module:LinearAlgebra.Vector#negated - * @return {module:LinearAlgebra.Vector} + * @method Vector#negated + * @return {Vector} */ negated() { return this.times(-1); @@ -173,8 +171,8 @@ class Vector { /** * Computes the dot product of this vector and v - * @method module:LinearAlgebra.Vector#dot - * @param {module:LinearAlgebra.Vector} v The vector this vector is dotted with. + * @method Vector#dot + * @param {Vector} v The vector this vector is dotted with. * @return {number} */ dot(v) { @@ -183,9 +181,9 @@ class Vector { /** * Computes the cross product of this vector and v - * @method module:LinearAlgebra.Vector#cross - * @param {module:LinearAlgebra.Vector} v The vector this vector is crossed with. - * @return {module:LinearAlgebra.Vector} + * @method Vector#cross + * @param {Vector} v The vector this vector is crossed with. + * @return {Vector} */ cross(v) { return new Vector( @@ -194,3 +192,5 @@ class Vector { this.x * v.y - this.y * v.x); } } + +export default Vector; \ No newline at end of file diff --git a/projects/direction-field-design/trivial-connections.js b/projects/direction-field-design/trivial-connections.js index 2f8cf57..1e02f76 100644 --- a/projects/direction-field-design/trivial-connections.js +++ b/projects/direction-field-design/trivial-connections.js @@ -1,8 +1,15 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let DenseMatrix = LinearAlgebra.DenseMatrix; +let SparseMatrix = LinearAlgebra.SparseMatrix; +let Triplet = LinearAlgebra.Triplet; +import HodgeDecomposition from '../vector-field-decomposition/hodge-decomposition.js'; +import TreeCotree from '../vector-field-decomposition/tree-cotree.js'; +import HarmonicBases from '../vector-field-decomposition/harmonic-bases.js'; +import { indexElements } from '../../core/mesh.js'; class TrivialConnections { /** - * This class implements the {@link https://cs.cmu.edu/~kmcrane/Projects/TrivialConnections trivial connections} algorithm to compute a smooth + * This class implements the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf trivial connections} algorithm to compute a smooth * 1-form vector fields on a surface mesh. * @constructor module:Projects.TrivialConnections * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. @@ -218,3 +225,5 @@ class TrivialConnections { return deltaBeta.plus(gamma); } } + +export default TrivialConnections; \ No newline at end of file diff --git a/projects/geodesic-distance/heat-method.js b/projects/geodesic-distance/heat-method.js index b7427a1..e8ec8b2 100644 --- a/projects/geodesic-distance/heat-method.js +++ b/projects/geodesic-distance/heat-method.js @@ -1,8 +1,11 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import { indexElements } from '../../core/mesh.js'; class HeatMethod { /** - * This class implements the {@link http://cs.cmu.edu/~kmcrane/Projects/HeatMethod/ heat method} to compute geodesic distance + * This class implements the {@link http://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/ heat method} to compute geodesic distance * on a surface mesh. * @constructor module:Projects.HeatMethod * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. @@ -133,3 +136,5 @@ class HeatMethod { return phi; } } + +export default HeatMethod; \ No newline at end of file diff --git a/projects/geometric-flow/mean-curvature-flow.js b/projects/geometric-flow/mean-curvature-flow.js index b4b7c50..9cbdcb5 100644 --- a/projects/geometric-flow/mean-curvature-flow.js +++ b/projects/geometric-flow/mean-curvature-flow.js @@ -1,8 +1,11 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import { indexElements } from '../../core/mesh.js'; +import { normalize } from '../../core/geometry.js'; class MeanCurvatureFlow { /** - * This class performs {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. + * This class performs {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. * @constructor module:Projects.MeanCurvatureFlow * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. * @property {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. @@ -71,3 +74,5 @@ class MeanCurvatureFlow { normalize(this.geometry.positions, vertices, false); } } + +export default MeanCurvatureFlow; \ No newline at end of file diff --git a/projects/geometric-flow/modified-mean-curvature-flow.js b/projects/geometric-flow/modified-mean-curvature-flow.js index 4f7e1ae..d77c23f 100644 --- a/projects/geometric-flow/modified-mean-curvature-flow.js +++ b/projects/geometric-flow/modified-mean-curvature-flow.js @@ -1,8 +1,8 @@ -"use strict"; +import MeanCurvatureFlow from './mean-curvature-flow.js'; class ModifiedMeanCurvatureFlow extends MeanCurvatureFlow { /** - * This class performs a {@link http://cs.jhu.edu/~misha/MyPapers/SGP12.pdf modified version} of {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. + * This class performs a {@link http://www.cs.jhu.edu/~misha/MyPapers/SGP12.pdf modified version} of {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. * @constructor module:Projects.ModifiedMeanCurvatureFlow * @augments module:Projects.MeanCurvatureFlow * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. @@ -21,3 +21,5 @@ class ModifiedMeanCurvatureFlow extends MeanCurvatureFlow { return M.plus(this.A.timesReal(h)); } } + +export default ModifiedMeanCurvatureFlow; \ No newline at end of file diff --git a/projects/parameterization/boundary-first-flattening.js b/projects/parameterization/boundary-first-flattening.js index 12792c5..f4de7a0 100644 --- a/projects/parameterization/boundary-first-flattening.js +++ b/projects/parameterization/boundary-first-flattening.js @@ -1,4 +1,9 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let DenseMatrix = LinearAlgebra.DenseMatrix; +let SparseMatrix = LinearAlgebra.SparseMatrix; +import Solvers from '../../utils/solvers.js'; +import { normalize } from '../../core/geometry.js'; class BoundaryFirstFlattening { /** @@ -392,3 +397,5 @@ class BoundaryFirstFlattening { return flattening; } } + +export default BoundaryFirstFlattening; \ No newline at end of file diff --git a/projects/parameterization/spectral-conformal-parameterization.js b/projects/parameterization/spectral-conformal-parameterization.js index eaa3810..eea87f9 100644 --- a/projects/parameterization/spectral-conformal-parameterization.js +++ b/projects/parameterization/spectral-conformal-parameterization.js @@ -1,8 +1,15 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let Complex = LinearAlgebra.Complex; +let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; +let ComplexTriplet = LinearAlgebra.ComplexTriplet; +import Solvers from '../../utils/solvers.js'; +import { indexElements } from '../../core/mesh.js'; +import { normalize } from '../../core/geometry.js'; class SpectralConformalParameterization { /** - * This class implements the {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf spectral conformal parameterization} algorithm to flatten + * This class implements the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf spectral conformal parameterization} algorithm to flatten * surface meshes with boundaries conformally. * @constructor module:Projects.SpectralConformalParameterization * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. @@ -72,3 +79,5 @@ class SpectralConformalParameterization { return flattening; } } + +export default SpectralConformalParameterization; \ No newline at end of file diff --git a/projects/poisson-problem/scalar-poisson-problem.js b/projects/poisson-problem/scalar-poisson-problem.js index 66e8464..51b6087 100644 --- a/projects/poisson-problem/scalar-poisson-problem.js +++ b/projects/poisson-problem/scalar-poisson-problem.js @@ -1,11 +1,13 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import { indexElements } from '../../core/mesh.js'; /** * @module Projects */ class ScalarPoissonProblem { /** - * This class solves a {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf scalar poisson problem} on a surface mesh. + * This class solves a {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf scalar poisson problem} on a surface mesh. * @constructor module:Projects.ScalarPoissonProblem * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. @@ -44,3 +46,5 @@ class ScalarPoissonProblem { return phi; } } + +export default ScalarPoissonProblem; \ No newline at end of file diff --git a/projects/vector-field-decomposition/harmonic-bases.js b/projects/vector-field-decomposition/harmonic-bases.js index b56d1a2..ca87644 100644 --- a/projects/vector-field-decomposition/harmonic-bases.js +++ b/projects/vector-field-decomposition/harmonic-bases.js @@ -1,8 +1,10 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import { indexElements } from '../../core/mesh.js'; class HarmonicBases { /** - * This class computes the {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf harmonic bases} of a surface mesh. + * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf harmonic bases} of a surface mesh. * @constructor module:Projects.HarmonicBases * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. */ @@ -66,3 +68,5 @@ class HarmonicBases { return gammas; } } + +export default HarmonicBases; \ No newline at end of file diff --git a/projects/vector-field-decomposition/hodge-decomposition.js b/projects/vector-field-decomposition/hodge-decomposition.js index 898b4be..bc077ee 100644 --- a/projects/vector-field-decomposition/hodge-decomposition.js +++ b/projects/vector-field-decomposition/hodge-decomposition.js @@ -1,8 +1,11 @@ -"use strict"; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let SparseMatrix = LinearAlgebra.SparseMatrix; +import DEC from '../../core/discrete-exterior-calculus.js'; +import { indexElements } from '../../core/mesh.js'; class HodgeDecomposition { /** - * This class computes the {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf hodge decomposition} of a vector field on a surface mesh. + * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf hodge decomposition} of a vector field on a surface mesh. * @constructor module:Projects.HodgeDecomposition * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. * @property {Object} edgeIndex A dictionary mapping each edge of the input mesh to a unique index. @@ -90,3 +93,5 @@ class HodgeDecomposition { return omega.minus(dAlpha.plus(deltaBeta)); } } + +export default HodgeDecomposition; \ No newline at end of file diff --git a/projects/vector-field-decomposition/tree-cotree.js b/projects/vector-field-decomposition/tree-cotree.js index b947f67..c35fbe8 100644 --- a/projects/vector-field-decomposition/tree-cotree.js +++ b/projects/vector-field-decomposition/tree-cotree.js @@ -1,8 +1,6 @@ -"use strict"; - class TreeCotree { /** - * This class computes the {@link https://cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf tree cotree} decomposition of a surface mesh + * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf tree cotree} decomposition of a surface mesh * to build its {@link https://en.wikipedia.org/wiki/Homology_(mathematics)#Surfaces homology generators}. * @constructor module:Projects.TreeCotree * @param {module:Core.Mesh} mesh The input mesh this class acts on. @@ -170,3 +168,5 @@ class TreeCotree { } } } + +export default TreeCotree; \ No newline at end of file From 0415d75a46c7ae90f77df25cf8b447cfb86dae27 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 18:03:34 -0800 Subject: [PATCH 03/33] Replace a few more originals --- utils/colormap.js | 10 +++++++++- utils/distortion.js | 5 ++++- utils/meshio.js | 5 ++++- utils/solvers.js | 6 +++++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/utils/colormap.js b/utils/colormap.js index e14713d..8fccc3d 100644 --- a/utils/colormap.js +++ b/utils/colormap.js @@ -1,4 +1,5 @@ -"use strict"; +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; let seismic = [ [0.000, [0.000, 0.000, 0.300]], @@ -2071,3 +2072,10 @@ function colormap(x, min, max, values) { return c1.plus(c2.minus(c1).times(scaling)); } + +export { + colormap, + seismic, + coolwarm, + hot +}; \ No newline at end of file diff --git a/utils/distortion.js b/utils/distortion.js index a6acda6..4a41a95 100644 --- a/utils/distortion.js +++ b/utils/distortion.js @@ -1,4 +1,5 @@ -"use strict" +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; /** * This class computes the quasi conformal error and area scaling resulting from @@ -252,3 +253,5 @@ function hsv(h, s, v) { return new Vector(r, g, b); } + +export default Distortion; \ No newline at end of file diff --git a/utils/meshio.js b/utils/meshio.js index 0ac2ffd..2c8d96a 100644 --- a/utils/meshio.js +++ b/utils/meshio.js @@ -1,4 +1,5 @@ -"use strict"; +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; /** * This class converts text from 3D file formats such as OBJ to a polygon soup mesh @@ -89,3 +90,5 @@ class MeshIO { return output; } } + +export default MeshIO; \ No newline at end of file diff --git a/utils/solvers.js b/utils/solvers.js index b9e3f42..d3cf46f 100644 --- a/utils/solvers.js +++ b/utils/solvers.js @@ -1,4 +1,6 @@ -"use strict"; +import LinearAlgebra from '../linear-algebra/linear-algebra.js'; +let Complex = LinearAlgebra.Complex; +let ComplexDenseMatrix = LinearAlgebra.ComplexDenseMatrix; /** * This class implements frequently used numerical algorithms such as the inverse power method. @@ -75,3 +77,5 @@ class Solvers { return m; } } + +export default Solvers; \ No newline at end of file From fb4bca7a0ef70db66f4a867ba99f4c686bc73303 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 18:14:31 -0800 Subject: [PATCH 04/33] Fix the test import paths --- node/tests/direction-field-design/test.js | 10 +++++----- node/tests/discrete-exterior-calculus/test.js | 10 +++++----- node/tests/geodesic-distance/test.js | 10 +++++----- node/tests/geometric-flow/test.js | 12 ++++++------ node/tests/geometry/test.js | 8 ++++---- node/tests/linear-algebra/test.js | 2 +- node/tests/mesh/test.js | 6 +++--- node/tests/parameterization/test.js | 10 +++++----- node/tests/poisson-problem/test.js | 10 +++++----- node/tests/vector-field-decomposition/test.js | 14 +++++++------- utils/colormap.js | 3 ++- 11 files changed, 48 insertions(+), 47 deletions(-) diff --git a/node/tests/direction-field-design/test.js b/node/tests/direction-field-design/test.js index 83fb52f..6a0a24b 100644 --- a/node/tests/direction-field-design/test.js +++ b/node/tests/direction-field-design/test.js @@ -1,12 +1,12 @@ import chai from 'chai'; import solution from '../../../tests/direction-field-design/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import TrivialConnections from '../../projects/direction-field-design/trivial-connections.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import TrivialConnections from '../../../projects/direction-field-design/trivial-connections.js'; describe("TrivialConnections", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/discrete-exterior-calculus/test.js b/node/tests/discrete-exterior-calculus/test.js index a5c154e..963e595 100644 --- a/node/tests/discrete-exterior-calculus/test.js +++ b/node/tests/discrete-exterior-calculus/test.js @@ -1,12 +1,12 @@ import chai from 'chai'; import solution from '../../../tests/discrete-exterior-calculus/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -import MeshIO from '../../utils/meshio.js'; -import { Mesh, indexElements } from '../../core/mesh.js'; -import Geometry from '../../core/geometry.js'; -import DEC from '../../core/discrete-exterior-calculus.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh, indexElements } from '../../../core/mesh.js'; +import Geometry from '../../../core/geometry.js'; +import DEC from '../../../core/discrete-exterior-calculus.js'; describe("DEC", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/geodesic-distance/test.js b/node/tests/geodesic-distance/test.js index 8f441ea..7a3fc37 100644 --- a/node/tests/geodesic-distance/test.js +++ b/node/tests/geodesic-distance/test.js @@ -1,13 +1,13 @@ import chai from 'chai'; import solution from '../../../tests/geodesic-distance/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import HeatMethod from '../../projects/geodesic-distance/heat-method.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import HeatMethod from '../../../projects/geodesic-distance/heat-method.js'; describe("HeatMethod", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/geometric-flow/test.js b/node/tests/geometric-flow/test.js index 33116b5..87a9a69 100644 --- a/node/tests/geometric-flow/test.js +++ b/node/tests/geometric-flow/test.js @@ -1,13 +1,13 @@ import chai from 'chai'; import solution from '../../../tests/geometric-flow/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import MeanCurvatureFlow from '../../projects/geometric-flow/mean-curvature-flow.js'; -import ModifiedMeanCurvatureFlow from '../../projects/geometric-flow/modified-mean-curvature-flow.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import MeanCurvatureFlow from '../../../projects/geometric-flow/mean-curvature-flow.js'; +import ModifiedMeanCurvatureFlow from '../../../projects/geometric-flow/modified-mean-curvature-flow.js'; describe("MeanCurvatureFlow", function() { let steps, h; diff --git a/node/tests/geometry/test.js b/node/tests/geometry/test.js index c457a82..73ef14f 100644 --- a/node/tests/geometry/test.js +++ b/node/tests/geometry/test.js @@ -1,14 +1,14 @@ import chai from 'chai'; import solution from '../../../tests/geometry/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; let SparseMatrix = LinearAlgebra.SparseMatrix; let Triplet = LinearAlgebra.Triplet; -import MeshIO from '../../utils/meshio.js'; -import { Mesh, indexElements } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh, indexElements } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; describe("Geometry", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/linear-algebra/test.js b/node/tests/linear-algebra/test.js index c06fcc9..b021c23 100644 --- a/node/tests/linear-algebra/test.js +++ b/node/tests/linear-algebra/test.js @@ -1,5 +1,5 @@ import chai from 'chai'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let Complex = LinearAlgebra.Complex; diff --git a/node/tests/mesh/test.js b/node/tests/mesh/test.js index b6b79aa..823cb3d 100644 --- a/node/tests/mesh/test.js +++ b/node/tests/mesh/test.js @@ -1,7 +1,7 @@ import chai from 'chai'; -import faceMesh from '../../../input/face.js'; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; +import faceMesh from '../../../../input/face.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; describe("Mesh", function() { let polygonSoup = undefined; diff --git a/node/tests/parameterization/test.js b/node/tests/parameterization/test.js index 293c8c3..0abbba9 100644 --- a/node/tests/parameterization/test.js +++ b/node/tests/parameterization/test.js @@ -1,15 +1,15 @@ import chai from 'chai'; import solution from '../../../tests/parameterization/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let Vector = LinearAlgebra.Vector; let memoryManager = LinearAlgebra.memoryManager; let Complex = LinearAlgebra.Complex; let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; let ComplexTriplet = LinearAlgebra.ComplexTriplet; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import SpectralConformalParameterization from '../../projects/parameterization/spectral-conformal-parameterization.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import SpectralConformalParameterization from '../../../projects/parameterization/spectral-conformal-parameterization.js'; describe("SpectralConformalParameterization", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/poisson-problem/test.js b/node/tests/poisson-problem/test.js index 8fa699e..d6392f1 100644 --- a/node/tests/poisson-problem/test.js +++ b/node/tests/poisson-problem/test.js @@ -1,12 +1,12 @@ import chai from 'chai'; import solution from '../../../tests/poisson-problem/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import ScalarPoissonProblem from '../../projects/poisson-problem/scalar-poisson-problem.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import ScalarPoissonProblem from '../../../projects/poisson-problem/scalar-poisson-problem.js'; describe("ScalarPoissonProblem", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/node/tests/vector-field-decomposition/test.js b/node/tests/vector-field-decomposition/test.js index 2a2823c..a259716 100644 --- a/node/tests/vector-field-decomposition/test.js +++ b/node/tests/vector-field-decomposition/test.js @@ -1,14 +1,14 @@ import chai from 'chai'; import solution from '../../../tests/vector-field-decomposition/solution.js'; -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +import LinearAlgebra from '../../../linear-algebra/linear-algebra.js'; let memoryManager = LinearAlgebra.memoryManager; let DenseMatrix = LinearAlgebra.DenseMatrix; -import MeshIO from '../../utils/meshio.js'; -import { Mesh } from '../../core/mesh.js'; -import { Geometry } from '../../core/geometry.js'; -import HodgeDecomposition from '../../projects/vector-field-decomposition/hodge-decomposition.js'; -import TreeCotree from '../../projects/vector-field-decomposition/tree-cotree.js'; -import HarmonicBases from '../../projects/vector-field-decomposition/harmonic-bases.js'; +import MeshIO from '../../../utils/meshio.js'; +import { Mesh } from '../../../core/mesh.js'; +import { Geometry } from '../../../core/geometry.js'; +import HodgeDecomposition from '../../../projects/vector-field-decomposition/hodge-decomposition.js'; +import TreeCotree from '../../../projects/vector-field-decomposition/tree-cotree.js'; +import HarmonicBases from '../../../projects/vector-field-decomposition/harmonic-bases.js'; describe("VectorFieldDecomposition", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/utils/colormap.js b/utils/colormap.js index 8fccc3d..4224927 100644 --- a/utils/colormap.js +++ b/utils/colormap.js @@ -2077,5 +2077,6 @@ export { colormap, seismic, coolwarm, - hot + hot, + clamp }; \ No newline at end of file From 8c70588e2af743a68d775179668931e753e5fc3e Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 18:15:07 -0800 Subject: [PATCH 05/33] Delete the redundant "node" files --- node/core/corner.js | 60 - node/core/discrete-exterior-calculus.js | 130 -- node/core/edge.js | 32 - node/core/face.js | 309 ---- node/core/geometry.js | 582 ------ node/core/halfedge.js | 60 - node/core/mesh.js | 409 ----- node/core/vertex.js | 338 ---- node/linear-algebra/complex-dense-matrix.js | 294 --- node/linear-algebra/complex-sparse-matrix.js | 429 ----- node/linear-algebra/complex.js | 182 -- node/linear-algebra/dense-matrix.js | 279 --- .../emscripten-memory-manager.js | 55 - node/linear-algebra/linear-algebra-asm.js | 26 - node/linear-algebra/linear-algebra.js | 19 - node/linear-algebra/sparse-matrix.js | 409 ----- node/linear-algebra/vector.js | 184 -- .../trivial-connections.js | 229 --- .../projects/geodesic-distance/heat-method.js | 140 -- .../geometric-flow/mean-curvature-flow.js | 78 - .../modified-mean-curvature-flow.js | 25 - .../boundary-first-flattening.js | 401 ----- .../spectral-conformal-parameterization.js | 83 - .../poisson-problem/scalar-poisson-problem.js | 50 - .../harmonic-bases.js | 72 - .../hodge-decomposition.js | 97 - .../vector-field-decomposition/tree-cotree.js | 172 -- node/utils/colormap.js | 1575 ----------------- node/utils/distortion.js | 257 --- node/utils/meshio.js | 94 - node/utils/solvers.js | 81 - 31 files changed, 7151 deletions(-) delete mode 100644 node/core/corner.js delete mode 100644 node/core/discrete-exterior-calculus.js delete mode 100644 node/core/edge.js delete mode 100644 node/core/face.js delete mode 100644 node/core/geometry.js delete mode 100644 node/core/halfedge.js delete mode 100644 node/core/mesh.js delete mode 100644 node/core/vertex.js delete mode 100644 node/linear-algebra/complex-dense-matrix.js delete mode 100644 node/linear-algebra/complex-sparse-matrix.js delete mode 100644 node/linear-algebra/complex.js delete mode 100644 node/linear-algebra/dense-matrix.js delete mode 100644 node/linear-algebra/emscripten-memory-manager.js delete mode 100644 node/linear-algebra/linear-algebra-asm.js delete mode 100644 node/linear-algebra/linear-algebra.js delete mode 100644 node/linear-algebra/sparse-matrix.js delete mode 100644 node/linear-algebra/vector.js delete mode 100644 node/projects/direction-field-design/trivial-connections.js delete mode 100644 node/projects/geodesic-distance/heat-method.js delete mode 100644 node/projects/geometric-flow/mean-curvature-flow.js delete mode 100644 node/projects/geometric-flow/modified-mean-curvature-flow.js delete mode 100644 node/projects/parameterization/boundary-first-flattening.js delete mode 100644 node/projects/parameterization/spectral-conformal-parameterization.js delete mode 100644 node/projects/poisson-problem/scalar-poisson-problem.js delete mode 100644 node/projects/vector-field-decomposition/harmonic-bases.js delete mode 100644 node/projects/vector-field-decomposition/hodge-decomposition.js delete mode 100644 node/projects/vector-field-decomposition/tree-cotree.js delete mode 100644 node/utils/colormap.js delete mode 100644 node/utils/distortion.js delete mode 100644 node/utils/meshio.js delete mode 100644 node/utils/solvers.js diff --git a/node/core/corner.js b/node/core/corner.js deleted file mode 100644 index d59ff3e..0000000 --- a/node/core/corner.js +++ /dev/null @@ -1,60 +0,0 @@ -class Corner { - /** - * This class represents a corner in a {@link module:Core.Mesh Mesh}. It is a convenience - * wrapper around {@link module:Core.Halfedge Halfedge} - each corner stores the halfedge opposite to it. - * @constructor module:Core.Corner - * @property {module:Core.Halfedge} halfedge The halfedge opposite to this corner. - */ - constructor() { - this.halfedge = undefined; - this.index = -1; // an ID between 0 and |C| - 1, where |C| is the number of corners in a mesh - } - - /** - * The vertex this corner lies on. - * @member module:Core.Corner#vertex - * @type {module:Core.Vertex} - */ - get vertex() { - return this.halfedge.prev.vertex; - } - - /** - * The face this corner is contained in. - * @member module:Core.Corner#face - * @type {module:Core.Face} - */ - get face() { - return this.halfedge.face; - } - - /** - * The next corner (in CCW order) in this corner's face. - * @member module:Core.Corner#next - * @type {module:Core.Corner} - */ - get next() { - return this.halfedge.next.corner; - } - - /** - * The previous corner (in CCW order) in this corner's face. - * @member module:Core.Corner#prev - * @type {module:Core.Corner} - */ - get prev() { - return this.halfedge.prev.corner; - } - - /** - * Defines a string representation for this corner as its index. - * @ignore - * @method module:Core.Corner#toString - * @returns {string} - */ - toString() { - return this.index; - } -} - -export default Corner; \ No newline at end of file diff --git a/node/core/discrete-exterior-calculus.js b/node/core/discrete-exterior-calculus.js deleted file mode 100644 index d2914f0..0000000 --- a/node/core/discrete-exterior-calculus.js +++ /dev/null @@ -1,130 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let SparseMatrix = LinearAlgebra.SparseMatrix; -let Triplet = LinearAlgebra.Triplet; - -/** - * This class contains methods to build common {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf discrete exterior calculus} operators. - * @memberof module:Core - */ -class DEC { - /** - * Builds a sparse diagonal matrix encoding the Hodge operator on 0-forms. - * By convention, the area of a vertex is 1. - * @static - * @param {module:Core.Geometry} geometry The geometry of a mesh. - * @param {Object} vertexIndex A dictionary mapping each vertex of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - static buildHodgeStar0Form(geometry, vertexIndex) { - let vertices = geometry.mesh.vertices; - let V = vertices.length; - let T = new Triplet(V, V); - for (let v of vertices) { - let i = vertexIndex[v]; - let area = geometry.barycentricDualArea(v); - - T.addEntry(area, i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse diagonal matrix encoding the Hodge operator on 1-forms. - * @static - * @param {module:Core.Geometry} geometry The geometry of a mesh. - * @param {Object} edgeIndex A dictionary mapping each edge of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - static buildHodgeStar1Form(geometry, edgeIndex) { - let edges = geometry.mesh.edges; - let E = edges.length; - let T = new Triplet(E, E); - for (let e of edges) { - let i = edgeIndex[e]; - let w = (geometry.cotan(e.halfedge) + geometry.cotan(e.halfedge.twin)) / 2; - - T.addEntry(w, i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse diagonal matrix encoding the Hodge operator on 2-forms. - * By convention, the area of a vertex is 1. - * @static - * @param {module:Core.Geometry} geometry The geometry of a mesh. - * @param {Object} faceIndex A dictionary mapping each face of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - static buildHodgeStar2Form(geometry, faceIndex) { - let faces = geometry.mesh.faces; - let F = faces.length; - let T = new Triplet(F, F); - for (let f of faces) { - let i = faceIndex[f]; - let area = geometry.area(f); - - T.addEntry(1 / area, i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse matrix encoding the exterior derivative on 0-forms. - * @static - * @param {module:Core.Geometry} geometry The geometry of a mesh. - * @param {Object} edgeIndex A dictionary mapping each edge of a mesh to a unique index. - * @param {Object} vertexIndex A dictionary mapping each vertex of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - static buildExteriorDerivative0Form(geometry, edgeIndex, vertexIndex) { - let edges = geometry.mesh.edges; - let vertices = geometry.mesh.vertices; - let E = edges.length; - let V = vertices.length; - let T = new Triplet(E, V); - for (let e of edges) { - let i = edgeIndex[e]; - let j = vertexIndex[e.halfedge.vertex]; - let k = vertexIndex[e.halfedge.twin.vertex]; - - T.addEntry(1, i, j); - T.addEntry(-1, i, k); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse matrix encoding the exterior derivative on 1-forms. - * @static - * @param {module:Core.Geometry} geometry The geometry of a mesh. - * @param {Object} faceIndex A dictionary mapping each face of a mesh to a unique index. - * @param {Object} edgeIndex A dictionary mapping each edge of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - static buildExteriorDerivative1Form(geometry, faceIndex, edgeIndex) { - let faces = geometry.mesh.faces; - let edges = geometry.mesh.edges; - let F = faces.length; - let E = edges.length; - let T = new Triplet(F, E); - for (let f of faces) { - let i = faceIndex[f]; - - for (let h of f.adjacentHalfedges()) { - let j = edgeIndex[h.edge]; - let sign = h.edge.halfedge === h ? 1 : -1; - - T.addEntry(sign, i, j); - } - } - - return SparseMatrix.fromTriplet(T); - } -} - -export default DEC; \ No newline at end of file diff --git a/node/core/edge.js b/node/core/edge.js deleted file mode 100644 index 2501f9b..0000000 --- a/node/core/edge.js +++ /dev/null @@ -1,32 +0,0 @@ -class Edge { - /** - * This class represents an edge in a {@link module:Core.Mesh Mesh}. - * @constructor module:Core.Edge - * @property {module:Core.Halfedge} halfedge One of the halfedges associated with this edge. - */ - constructor() { - this.halfedge = undefined; - this.index = -1; // an ID between 0 and |E| - 1, where |E| is the number of edges in a mesh - } - - /** - * Checks whether this edge lies on a boundary. - * @method module:Core.Edge#onBoundary - * @returns {boolean} - */ - onBoundary() { - return (this.halfedge.onBoundary || this.halfedge.twin.onBoundary); - } - - /** - * Defines a string representation for this edge as its index. - * @ignore - * @method module:Core.Edge#toString - * @returns {string} - */ - toString() { - return this.index; - } -} - -export default Edge; \ No newline at end of file diff --git a/node/core/face.js b/node/core/face.js deleted file mode 100644 index 1b4cbea..0000000 --- a/node/core/face.js +++ /dev/null @@ -1,309 +0,0 @@ -class Face { - /** - * This class represents a face in a {@link module:Core.Mesh Mesh}. - * @constructor module:Core.Face - * @property {module:Core.Halfedge} halfedge One of the halfedges associated with this face. - */ - constructor() { - this.halfedge = undefined; - this.index = -1; // an ID between 0 and |F| - 1 if this face is not a boundary loop - // or an ID between 0 and |B| - 1 if this face is a boundary loop, where |F| is the - // number of faces in the mesh and |B| is the number of boundary loops in the mesh - } - - /** - * Checks whether this face is a boundary loop. - * @method module:Core.Face#isBoundaryLoop - * @returns {boolean} - */ - isBoundaryLoop() { - return this.halfedge.onBoundary; - } - - /** - * Convenience function to iterate over the vertices in this face. - * Iterates over the vertices of a boundary loop if this face is a boundary loop. - * @method module:Core.Face#adjacentVertices - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Vertex} - * @example - * let f = mesh.faces[0]; // or let b = mesh.boundaries[0] - * for (let v of f.adjacentVertices()) { - * // Do something with v - * } - */ - adjacentVertices(ccw = true) { - return new FaceVertexIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the edges in this face. - * Iterates over the edges of a boundary loop if this face is a boundary loop. - * @method module:Core.Face#adjacentEdges - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Edge} - * @example - * let f = mesh.faces[0]; // or let b = mesh.boundaries[0] - * for (let e of f.adjacentEdges()) { - * // Do something with e - * } - */ - adjacentEdges(ccw = true) { - return new FaceEdgeIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the faces neighboring this face. - * @method module:Core.Face#adjacentFaces - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Face} - * @example - * let f = mesh.faces[0]; // or let b = mesh.boundaries[0] - * for (let g of f.adjacentFaces()) { - * // Do something with g - * } - */ - adjacentFaces(ccw = true) { - return new FaceFaceIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the halfedges in this face. - * Iterates over the halfedges of a boundary loop if this face is a boundary loop. - * @method module:Core.Face#adjacentHalfedges - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Halfedge} - * @example - * let f = mesh.faces[0]; // or let b = mesh.boundaries[0] - * for (let h of f.adjacentHalfedges()) { - * // Do something with h - * } - */ - adjacentHalfedges(ccw = true) { - return new FaceHalfedgeIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the corners in this face. Not valid if this face - * is a boundary loop. - * @method module:Core.Face#adjacentCorners - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Corner} - * @example - * let f = mesh.faces[0]; - * for (let c of f.adjacentCorners()) { - * // Do something with c - * } - */ - adjacentCorners(ccw = true) { - return new FaceCornerIterator(this.halfedge, ccw); - } - - /** - * Defines a string representation for this face as its index. - * @ignore - * @method module:Core.Face#toString - * @returns {string} - */ - toString() { - return this.index; - } -} - -/** - * This class represents an adjacent vertex iterator for a {@link module:Core.Face Face}. - * @ignore - * @memberof module:Core - */ -class FaceVertexIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let vertex = this.current.vertex; - this.current = this.ccw ? this.current.next : this.current.prev; - return { - done: false, - value: vertex - } - } - } - } - } -} - -/** - * This class represents an adjacent edge iterator for a {@link module:Core.Face Face}. - * @ignore - * @memberof module:Core - */ -class FaceEdgeIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let edge = this.current.edge; - this.current = this.ccw ? this.current.next : this.current.prev; - return { - done: false, - value: edge - } - } - } - } - } -} - -/** - * This class represents an adjacent face iterator for a {@link module:Core.Face Face}. - * @ignore - * @memberof module:Core - */ -class FaceFaceIterator { - // constructor - constructor(halfedge, ccw) { - while (halfedge.twin.onBoundary) { - halfedge = halfedge.next; - } // twin halfedge must not be on the boundary - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - while (this.current.twin.onBoundary) { - this.current = this.ccw ? this.current.next : this.current.prev; - } // twin halfedge must not be on the boundary - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let face = this.current.twin.face; - this.current = this.ccw ? this.current.next : this.current.prev; - return { - done: false, - value: face - } - } - } - } - } -} - -/** - * This class represents an adjacent halfedge iterator for a {@link module:Core.Face Face}. - * @ignore - * @memberof module:Core - */ -class FaceHalfedgeIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let halfedge = this.current; - this.current = this.ccw ? this.current.next : this.current.prev; - return { - done: false, - value: halfedge - } - } - } - } - } -} - -/** - * This class represents an adjacent corner iterator for a {@link module:Core.Face Face}. - * @ignore - * @memberof module:Core - */ -class FaceCornerIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - this.current = this.ccw ? this.current.next : this.current.prev; - let corner = this.current.corner; // corner will be undefined if this face is a boundary loop - return { - done: false, - value: corner - } - } - } - } - } -} - -export default Face; \ No newline at end of file diff --git a/node/core/geometry.js b/node/core/geometry.js deleted file mode 100644 index 0050e04..0000000 --- a/node/core/geometry.js +++ /dev/null @@ -1,582 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; -let Complex = LinearAlgebra.Complex; -let SparseMatrix = LinearAlgebra.SparseMatrix; -let Triplet = LinearAlgebra.Triplet; -let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; -let ComplexTriplet = LinearAlgebra.ComplexTriplet; - -class Geometry { - /** - * This class represents the geometry of a {@link module:Core.Mesh Mesh}. This includes information such - * as the position of vertices as well as methods to compute edge lengths, corner - * angles, face area, normals, discrete curvatures etc. - * @constructor module:Core.Geometry - * @param {module:Core.Mesh} mesh The mesh this class describes the geometry of. - * @param {module:LinearAlgebra.Vector[]} positions An array containing the position of each vertex in a mesh. - * @param {boolean} normalizePositions flag to indicate whether positions should be normalized. Default value is true. - * @property {module:Core.Mesh} mesh The mesh this class describes the geometry of. - * @property {Object} positions A dictionary mapping each vertex to a normalized position. - */ - constructor(mesh, positions, normalizePositions = true) { - this.mesh = mesh; - this.positions = {}; - for (let i = 0; i < positions.length; i++) { - let v = this.mesh.vertices[i]; - let p = positions[i]; - - this.positions[v] = p; - } - - if (normalizePositions) { - normalize(this.positions, mesh.vertices); - } - } - - /** - * Computes the vector along a halfedge. - * @method module:Core.Geometry#vector - * @param {module:Core.Halfedge} h The halfedge along which the vector needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vector(h) { - let a = this.positions[h.vertex]; - let b = this.positions[h.next.vertex]; - - return b.minus(a); - } - - /** - * Computes the length of an edge. - * @method module:Core.Geometry#length - * @param {module:Core.Edge} e The edge whose length needs to be computed. - * @returns {number} - */ - length(e) { - return this.vector(e.halfedge).norm(); - } - - /** - * Computes the midpoint of an edge. - * @method module:Core.Geometry#midpoint - * @param {module:Core.Edge} e The edge whose midpoint needs to be computed. - * @returns {number} - */ - midpoint(e) { - let h = e.halfedge; - let a = this.positions[h.vertex]; - let b = this.positions[h.twin.vertex]; - - return (a.plus(b)).over(2); - } - - /** - * Computes the mean edge length of all the edges in a mesh. - * @method module:Core.Geometry#meanEdgeLength - * @returns {number} - */ - meanEdgeLength() { - let sum = 0; - let edges = this.mesh.edges; - for (let e of edges) { - sum += this.length(e); - } - - return sum / edges.length; - } - - /** - * Computes the area of a face. - * @method module:Core.Geometry#area - * @param {module:Core.Face} f The face whose area needs to be computed. - * @returns {number} - */ - area(f) { - if (f.isBoundaryLoop()) return 0.0; - - let u = this.vector(f.halfedge); - let v = this.vector(f.halfedge.prev).negated(); - - return 0.5 * u.cross(v).norm(); - } - - /** - * Computes the total surface area of a mesh. - * @method module:Core.Geometry#totalArea - * @returns {number} - */ - totalArea() { - let sum = 0.0; - for (let f of this.mesh.faces) { - sum += this.area(f); - } - - return sum; - } - - /** - * Computes the normal of a face. - * @method module:Core.Geometry#faceNormal - * @param {module:Core.Face} f The face whose normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - faceNormal(f) { - if (f.isBoundaryLoop()) return undefined; - - let u = this.vector(f.halfedge); - let v = this.vector(f.halfedge.prev).negated(); - - return u.cross(v).unit(); - } - - /** - * Computes the centroid of a face. - * @method module:Core.Geometry#centroid - * @param {module:Core.Face} f The face whose centroid needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - centroid(f) { - let h = f.halfedge; - let a = this.positions[h.vertex]; - let b = this.positions[h.next.vertex]; - let c = this.positions[h.prev.vertex]; - - if (f.isBoundaryLoop()) return a.plus(b).over(2); - - return a.plus(b).plus(c).over(3); - } - - /** - * Computes the circumcenter of a face. - * @method module:Core.Geometry#circumcenter - * @param {module:Core.Face} f The face whose circumcenter needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - circumcenter(f) { - let h = f.halfedge; - let a = this.positions[h.vertex]; - let b = this.positions[h.next.vertex]; - let c = this.positions[h.prev.vertex]; - - if (f.isBoundaryLoop()) return a.plus(b).over(2); - - let ac = c.minus(a); - let ab = b.minus(a); - let w = ab.cross(ac); - - let u = (w.cross(ab)).times(ac.norm2()); - let v = (ac.cross(w)).times(ab.norm2()); - let x = (u.plus(v)).over(2 * w.norm2()); - - return x.plus(a); - } - - /** - * Computes an orthonormal bases for a face. - * @method module:Core.Geometry#orthonormalBases - * @param {module:Core.Face} f The face on which the orthonormal bases needs to be computed. - * @returns {module:LinearAlgebra.Vector[]} An array containing two orthonormal vectors tangent to the face. - */ - orthonormalBases(f) { - let e1 = this.vector(f.halfedge).unit(); - - let normal = this.faceNormal(f); - let e2 = normal.cross(e1); - - return [e1, e2]; - } - - /** - * Computes the angle (in radians) at a corner. - * @method module:Core.Geometry#angle - * @param {module:Core.Corner} c The corner at which the angle needs to be computed. - * @returns {number} The angle clamped between 0 and π. - */ - angle(c) { - let u = this.vector(c.halfedge.prev).unit(); - let v = this.vector(c.halfedge.next).negated().unit(); - - return Math.acos(Math.max(-1.0, Math.min(1.0, u.dot(v)))); - } - - /** - * Computes the cotangent of the angle opposite to a halfedge. - * @method module:Core.Geometry#cotan - * @param {module:Core.Halfedge} h The halfedge opposite to the angle whose cotangent needs to be computed. - * @returns {number} - */ - cotan(h) { - if (h.onBoundary) return 0.0; - - let u = this.vector(h.prev); - let v = this.vector(h.next).negated(); - - return u.dot(v) / u.cross(v).norm(); - } - - /** - * Computes the signed angle (in radians) between two adjacent faces. - * @method module:Core.Geometry#dihedralAngle - * @param {module:Core.Halfedge} h The halfedge (shared by the two adjacent faces) on which - * the dihedral angle is computed. - * @returns {number} The dihedral angle. - */ - dihedralAngle(h) { - if (h.onBoundary || h.twin.onBoundary) return 0.0; - - let n1 = this.faceNormal(h.face); - let n2 = this.faceNormal(h.twin.face); - let w = this.vector(h).unit(); - - let cosTheta = n1.dot(n2); - let sinTheta = n1.cross(n2).dot(w); - - return Math.atan2(sinTheta, cosTheta); - } - - /** - * Computes the barycentric dual area of a vertex. - * @method module:Core.Geometry#barycentricDualArea - * @param {module:Core.Vertex} v The vertex whose barycentric dual area needs to be computed. - * @returns {number} - */ - barycentricDualArea(v) { - let area = 0.0; - for (let f of v.adjacentFaces()) { - area += this.area(f) / 3; - } - - return area; - } - - /** - * Computes the circumcentric dual area of a vertex. - * @see {@link http://www.cs.cmu.edu/~kmcrane/Projects/Other/TriangleAreasCheatSheet.pdf} - * @method module:Core.Geometry#circumcentricDualArea - * @param {module:Core.Vertex} v The vertex whose circumcentric dual area needs to be computed. - * @returns {number} - */ - circumcentricDualArea(v) { - let area = 0.0; - for (let h of v.adjacentHalfedges()) { - let u2 = this.vector(h.prev).norm2(); - let v2 = this.vector(h).norm2(); - let cotAlpha = this.cotan(h.prev); - let cotBeta = this.cotan(h); - - area += (u2 * cotAlpha + v2 * cotBeta) / 8; - } - - return area; - } - - /** - * Computes the normal at a vertex using the "equally weighted" method. - * @method module:Core.Geometry#vertexNormalEquallyWeighted - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalEquallyWeighted(v) { - let n = new Vector(); - for (let f of v.adjacentFaces()) { - let normal = this.faceNormal(f); - - n.incrementBy(normal); - } - - n.normalize(); - - return n; - } - - /** - * Computes the normal at a vertex using the "face area weights" method. - * @method module:Core.Geometry#vertexNormalAreaWeighted - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalAreaWeighted(v) { - let n = new Vector(); - for (let f of v.adjacentFaces()) { - let normal = this.faceNormal(f); - let area = this.area(f); - - n.incrementBy(normal.times(area)); - } - - n.normalize(); - - return n; - } - - /** - * Computes the normal at a vertex using the "tip angle weights" method. - * @method module:Core.Geometry#vertexNormalAngleWeighted - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalAngleWeighted(v) { - let n = new Vector(); - for (let c of v.adjacentCorners()) { - let normal = this.faceNormal(c.halfedge.face); - let angle = this.angle(c); - - n.incrementBy(normal.times(angle)); - } - - n.normalize(); - - return n; - } - - /** - * Computes the normal at a vertex using the "gauss curvature" method. - * @method module:Core.Geometry#vertexNormalGaussCurvature - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalGaussCurvature(v) { - let n = new Vector(); - for (let h of v.adjacentHalfedges()) { - let weight = 0.5 * this.dihedralAngle(h) / this.length(h.edge); - - n.decrementBy(this.vector(h).times(weight)); - } - - n.normalize(); - - return n; - } - - /** - * Computes the normal at a vertex using the "mean curvature" method (same as the "area gradient" method). - * @method module:Core.Geometry#vertexNormalMeanCurvature - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalMeanCurvature(v) { - let n = new Vector(); - for (let h of v.adjacentHalfedges()) { - let weight = 0.5 * (this.cotan(h) + this.cotan(h.twin)); - - n.decrementBy(this.vector(h).times(weight)); - } - - n.normalize(); - - return n; - } - - /** - * Computes the normal at a vertex using the "inscribed sphere" method. - * @method module:Core.Geometry#vertexNormalSphereInscribed - * @param {module:Core.Vertex} v The vertex on which the normal needs to be computed. - * @returns {module:LinearAlgebra.Vector} - */ - vertexNormalSphereInscribed(v) { - let n = new Vector(); - for (let c of v.adjacentCorners()) { - let u = this.vector(c.halfedge.prev); - let v = this.vector(c.halfedge.next).negated(); - - n.incrementBy(u.cross(v).over(u.norm2() * v.norm2())); - } - - n.normalize(); - - return n; - } - - /** - * Computes the angle defect at a vertex (= 2π minus the sum of incident angles - * at an interior vertex or π minus the sum of incident angles at a boundary vertex). - * @method module:Core.Geometry#angleDefect - * @param {module:Core.Vertex} v The vertex whose angle defect needs to be computed. - * @returns {number} - */ - angleDefect(v) { - let angleSum = 0.0; - for (let c of v.adjacentCorners()) { - angleSum += this.angle(c); - } - - return v.onBoundary() ? Math.PI - angleSum : 2 * Math.PI - angleSum; - } - - /** - * Computes the (integrated) scalar gauss curvature at a vertex. - * @method module:Core.Geometry#scalarGaussCurvature - * @param {module:Core.Vertex} v The vertex whose gauss curvature needs to be computed. - * @returns {number} - */ - scalarGaussCurvature(v) { - return this.angleDefect(v); - } - - /** - * Computes the (integrated) scalar mean curvature at a vertex. - * @method module:Core.Geometry#scalarMeanCurvature - * @param {module:Core.Vertex} v The vertex whose mean curvature needs to be computed. - * @returns {number} - */ - scalarMeanCurvature(v) { - let sum = 0.0; - for (let h of v.adjacentHalfedges()) { - sum += 0.5 * this.length(h.edge) * this.dihedralAngle(h); - } - - return sum; - } - - /** - * Computes the total angle defect (= 2π times the euler characteristic of the mesh). - * @method module:Core.Geometry#totalAngleDefect - * @returns {number} - */ - totalAngleDefect() { - let totalDefect = 0.0; - for (let v of this.mesh.vertices) { - totalDefect += this.angleDefect(v); - } - - return totalDefect; - } - - /** - * Computes the (pointwise) minimum and maximum principal curvature values at a vertex. - * @method module:Core.Geometry#principalCurvatures - * @param {module:Core.Vertex} v The vertex on which the principal curvatures need to be computed. - * @returns {number[]} An array containing the minimum and maximum principal curvature values at a vertex. - */ - principalCurvatures(v) { - let A = this.circumcentricDualArea(v); - let H = this.scalarMeanCurvature(v) / A; - let K = this.angleDefect(v) / A; - - let discriminant = H * H - K; - if (discriminant > 0) discriminant = Math.sqrt(discriminant); - else discriminant = 0; - - let k1 = H - discriminant; - let k2 = H + discriminant; - - return [k1, k2]; - } - - /** - * Builds a sparse laplace matrix. The laplace operator is negative semidefinite; - * instead we build a positive definite matrix by multiplying the entries of the - * laplace matrix by -1 and shifting the diagonal elements by a small constant (e.g. 1e-8). - * @method module:Core.Geometry#laplaceMatrix - * @param {Object} vertexIndex A dictionary mapping each vertex of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - laplaceMatrix(vertexIndex) { - let V = this.mesh.vertices.length; - let T = new Triplet(V, V); - for (let v of this.mesh.vertices) { - let i = vertexIndex[v]; - let sum = 1e-8; - - for (let h of v.adjacentHalfedges()) { - let j = vertexIndex[h.twin.vertex]; - let weight = (this.cotan(h) + this.cotan(h.twin)) / 2; - sum += weight; - - T.addEntry(-weight, i, j); - } - - T.addEntry(sum, i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse diagonal mass matrix containing the barycentric dual area of each vertex - * of a mesh. - * @method module:Core.Geometry#massMatrix - * @param {Object} vertexIndex A dictionary mapping each vertex of a mesh to a unique index. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - massMatrix(vertexIndex) { - let V = this.mesh.vertices.length; - let T = new Triplet(V, V); - for (let v of this.mesh.vertices) { - let i = vertexIndex[v]; - - T.addEntry(this.barycentricDualArea(v), i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Builds a sparse complex laplace matrix. The laplace operator is negative semidefinite; - * instead we build a positive definite matrix by multiplying the entries of the - * laplace matrix by -1 and shifting the diagonal elements by a small constant (e.g. 1e-8). - * @method module:Core.Geometry#complexLaplaceMatrix - * @param {Object} vertexIndex A dictionary mapping each vertex of a mesh to a unique index. - * @returns {module:LinearAlgebra.ComplexSparseMatrix} - */ - complexLaplaceMatrix(vertexIndex) { - let V = this.mesh.vertices.length; - let T = new ComplexTriplet(V, V); - for (let v of this.mesh.vertices) { - let i = vertexIndex[v]; - let sum = 1e-8; - - for (let h of v.adjacentHalfedges()) { - let j = vertexIndex[h.twin.vertex]; - let weight = (this.cotan(h) + this.cotan(h.twin)) / 2; - sum += weight; - - T.addEntry(new Complex(-weight), i, j); - } - - T.addEntry(new Complex(sum), i, i); - } - - return ComplexSparseMatrix.fromTriplet(T); - } -} - -/** - * Centers a mesh about the origin and rescales it to unit radius. - * @global - * @function module:Core.normalize - * @param {module:LinearAlgebra.Vector[]} positions The position of each vertex in the vertices array. - * @param {module:Core.Vertex[]} vertices The vertices of a mesh. - * @param {boolean} rescale A flag indicating whether mesh positions should be scaled to a unit radius. - */ -function normalize(positions, vertices, rescale = true) { - // compute center of mass - let N = vertices.length; - let cm = new Vector(); - for (let v of vertices) { - let p = positions[v]; - - cm.incrementBy(p); - } - cm.divideBy(N); - - // translate to origin and determine radius - let radius = -1; - for (let v of vertices) { - let p = positions[v]; - - p.decrementBy(cm); - radius = Math.max(radius, p.norm()); - } - - // rescale to unit radius - if (rescale) { - for (let v of vertices) { - let p = positions[v]; - - p.divideBy(radius); - } - } -} - -export { Geometry, normalize }; \ No newline at end of file diff --git a/node/core/halfedge.js b/node/core/halfedge.js deleted file mode 100644 index fc3cdbd..0000000 --- a/node/core/halfedge.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * This module implements a halfedge mesh data structure and its associated geometry. - * A halfedge mesh stores mesh elements such as vertices, edges and faces as well as - * their connectivity information. The latter is particulary important in geometry - * processing, as algorithms often exploit local connectivity of mesh elements. At - * the cost of slightly higher memory consumption compared to other data structures, - * a halfedge mesh enables quick access of mesh elements. For example, it is possible to - * enumerate the vertices and edges contained in and faces adjacent to any single face - * in a mesh. Similar enumerations are also possible for any vertex or edge in a mesh. - * Additionally, its possible to perform global traversals that enumerate over all mesh - * vertices, edges and faces in an unspecified but fixed order. - * - * - * - * The diagram above illustrates how connectivity information is stored locally in a - * halfedge mesh. The key idea is to split a edge into two directed halfedges. Each - * halfedge stores a reference to the vertex at its base, the edge it lies on, the - * face adjacent to it, the next halfedge in counter clockwise order, and the opposite - * (or twin) halfedge. Each vertex, edge and face of a mesh in turn stores a reference - * to one of the halfedges (outgoing in the case of a vertex) its incident on. - * - * @module Core - */ -class Halfedge { - /** - * This class defines the connectivity of a {@link module:Core.Mesh Mesh}. - * @constructor module:Core.Halfedge - * @property {module:Core.Vertex} vertex The vertex at the base of this halfedge. - * @property {module:Core.Edge} edge The edge associated with this halfedge. - * @property {module:Core.Face} face The face associated with this halfedge. - * @property {module:Core.Corner} corner The corner opposite to this halfedge. Undefined if this halfedge is on the boundary. - * @property {module:Core.Halfedge} next The next halfedge (in CCW order) in this halfedge's face. - * @property {module:Core.Halfedge} prev The previous halfedge (in CCW order) in this halfedge's face. - * @property {module:Core.Halfedge} twin The other halfedge associated with this halfedge's edge. - * @property {boolean} onBoundary A flag that indicates whether this halfedge is on a boundary. - */ - constructor() { - this.vertex = undefined; - this.edge = undefined; - this.face = undefined; - this.corner = undefined; - this.next = undefined; - this.prev = undefined; - this.twin = undefined; - this.onBoundary = undefined; - this.index = -1; // an ID between 0 and |H| - 1, where |H| is the number of halfedges in a mesh - } - - /** - * Defines a string representation for this halfedge as its index. - * @ignore - * @method module:Core.Halfedge#toString - * @returns {string} - */ - toString() { - return this.index; - } -} - -export default Halfedge; \ No newline at end of file diff --git a/node/core/mesh.js b/node/core/mesh.js deleted file mode 100644 index 852ee76..0000000 --- a/node/core/mesh.js +++ /dev/null @@ -1,409 +0,0 @@ -import Vertex from './vertex.js'; -import Edge from './edge.js'; -import Face from './face.js'; -import Halfedge from './halfedge.js'; -import Corner from './corner.js'; - -class Mesh { - /** - * This class represents a Mesh. - * @constructor module:Core.Mesh - * @property {module:Core.Vertex[]} vertices The vertices contained in this mesh. - * @property {module:Core.Edge[]} edges The edges contained in this mesh. - * @property {module:Core.Face[]} faces The faces contained in this mesh. - * @property {module:Core.Corner[]} corners The corners contained in this mesh. - * @property {module:Core.Halfedge[]} halfedges The halfedges contained in this mesh. - * @property {module:Core.Face[]} boundaries The boundary loops contained in this mesh. - * @property {Array.} generators An array of halfedge arrays, i.e., - * [[h11, h21, ..., hn1], [h12, h22, ..., hm2], ...] representing this mesh's - * {@link https://en.wikipedia.org/wiki/Homology_(mathematics)#Surfaces homology generators}. - */ - constructor() { - this.vertices = []; - this.edges = []; - this.faces = []; - this.corners = []; - this.halfedges = []; - this.boundaries = []; - this.generators = []; - } - - /** - * Computes the euler characteristic of this mesh. - * @method module:Core.Mesh#eulerCharacteristic - * @returns {number} - */ - eulerCharacteristic() { - return this.vertices.length - this.edges.length + this.faces.length; - } - - /** - * Constructs this mesh. - * @method module:Core.Mesh#build - * @param {Object} polygonSoup A polygon soup mesh containing vertex positions and indices. - * @param {module:LinearAlgebra.Vector[]} polygonSoup.v The vertex positions of the polygon soup mesh. - * @param {number[]} polygonSoup.f The indices of the polygon soup mesh. - * @returns {boolean} True if this mesh is constructed successfully and false if not - * (when this mesh contains any one or a combination of the following - non-manifold vertices, - * non-manifold edges, isolated vertices, isolated faces). - */ - build(polygonSoup) { - // preallocate elements - let positions = polygonSoup["v"]; - let indices = polygonSoup["f"]; - this.preallocateElements(positions, indices); - - // create and insert vertices - let indexToVertex = new Map(); - for (let i = 0; i < positions.length; i++) { - let v = new Vertex(); - this.vertices[i] = v; - indexToVertex.set(i, v); - } - - // create and insert halfedges, edges and non boundary loop faces - let eIndex = 0; - let edgeCount = new Map(); - let existingHalfedges = new Map(); - let hasTwinHalfedge = new Map(); - for (let I = 0; I < indices.length; I += 3) { - // create new face - let f = new Face(); - this.faces[I / 3] = f; - - // create a halfedge for each edge of the newly created face - for (let J = 0; J < 3; J++) { - let h = new Halfedge(); - this.halfedges[I + J] = h; - } - - // initialize the newly created halfedges - for (let J = 0; J < 3; J++) { - // current halfedge goes from vertex i to vertex j - let K = (J + 1) % 3; - let i = indices[I + J]; - let j = indices[I + K]; - - // set the current halfedge's attributes - let h = this.halfedges[I + J]; - h.next = this.halfedges[I + K]; - h.prev = this.halfedges[I + (J + 3 - 1) % 3]; - h.onBoundary = false; - hasTwinHalfedge.set(h, false); - - // point the new halfedge and vertex i to each other - let v = indexToVertex.get(i); - h.vertex = v; - v.halfedge = h; - - // point the new halfedge and face to each other - h.face = f; - f.halfedge = h; - - // swap if i > j - if (i > j) j = [i, i = j][0]; - - let value = [i, j] - let key = value.toString(); - if (existingHalfedges.has(key)) { - // if a halfedge between vertex i and j has been created in the past, then it - // is the twin halfedge of the current halfedge - let twin = existingHalfedges.get(key); - h.twin = twin; - twin.twin = h; - h.edge = twin.edge; - - hasTwinHalfedge.set(h, true); - hasTwinHalfedge.set(twin, true); - edgeCount.set(key, edgeCount.get(key) + 1); - - } else { - // create an edge and set its halfedge - let e = new Edge(); - this.edges[eIndex++] = e; - h.edge = e; - e.halfedge = h; - - // record the newly created edge and halfedge from vertex i to j - existingHalfedges.set(key, h); - edgeCount.set(key, 1); - } - - // check for non-manifold edges - if (edgeCount.get(key) > 2) { - alert("Mesh has non-manifold edges!"); - return false; - } - } - } - - // create and insert boundary halfedges and "imaginary" faces for boundary cycles - // also create and insert corners - let hIndex = indices.length; - let cIndex = 0; - for (let i = 0; i < indices.length; i++) { - // if a halfedge has no twin halfedge, create a new face and - // link it the corresponding boundary cycle - let h = this.halfedges[i]; - if (!hasTwinHalfedge.get(h)) { - // create new face - let f = new Face(); - this.boundaries.push(f); - - // walk along boundary cycle - let boundaryCycle = []; - let he = h; - do { - // create a new halfedge - let bH = new Halfedge(); - this.halfedges[hIndex++] = bH; - boundaryCycle.push(bH); - - // grab the next halfedge along the boundary that does not have a twin halfedge - let nextHe = he.next; - while (hasTwinHalfedge.get(nextHe)) { - nextHe = nextHe.twin.next; - } - - // set the current halfedge's attributes - bH.vertex = nextHe.vertex; - bH.edge = he.edge; - bH.onBoundary = true; - - // point the new halfedge and face to each other - bH.face = f; - f.halfedge = bH; - - // point the new halfedge and he to each other - bH.twin = he; - he.twin = bH; - - // continue walk - he = nextHe; - } while (he !== h); - - // link the cycle of boundary halfedges together - let n = boundaryCycle.length; - for (let j = 0; j < n; j++) { - boundaryCycle[j].next = boundaryCycle[(j + n - 1) % n]; // boundary halfedges are linked in clockwise order - boundaryCycle[j].prev = boundaryCycle[(j + 1) % n]; - hasTwinHalfedge.set(boundaryCycle[j], true); - hasTwinHalfedge.set(boundaryCycle[j].twin, true); - } - } - - // point the newly created corner and its halfedge to each other - if (!h.onBoundary) { - let c = new Corner(); - c.halfedge = h; - h.corner = c; - - this.corners[cIndex++] = c; - } - } - - // check if mesh has isolated vertices, isolated faces or - // non-manifold vertices - if (this.hasIsolatedVertices() || - this.hasIsolatedFaces() || - this.hasNonManifoldVertices()) { - return false; - } - - // index elements - this.indexElements(); - - return true; - } - - /** - * Preallocates mesh elements. - * @private - * @method module:Core.Mesh#preallocateElements - * @param {module:LinearAlgebra.Vector[]} positions The vertex positions of a polygon soup mesh. - * @param {number[]} indices The indices of a polygon soup mesh. - */ - preallocateElements(positions, indices) { - let nBoundaryHalfedges = 0; - let sortedEdges = new Map(); - for (let I = 0; I < indices.length; I += 3) { - for (let J = 0; J < 3; J++) { - let K = (J + 1) % 3; - let i = indices[I + J]; - let j = indices[I + K]; - - // swap if i > j - if (i > j) j = [i, i = j][0]; - - let value = [i, j] - let key = value.toString(); - if (sortedEdges.has(key)) { - nBoundaryHalfedges--; - - } else { - sortedEdges.set(key, value); - nBoundaryHalfedges++; - } - } - } - - let nVertices = positions.length; - let nEdges = sortedEdges.size; - let nFaces = indices.length / 3; - let nHalfedges = 2 * nEdges; - let nInteriorHalfedges = nHalfedges - nBoundaryHalfedges; - - // clear arrays - this.vertices.length = 0; - this.edges.length = 0; - this.faces.length = 0; - this.halfedges.length = 0; - this.corners.length = 0; - this.boundaries.length = 0; - this.generators.length = 0; - - // allocate space - this.vertices = new Array(nVertices); - this.edges = new Array(nEdges); - this.faces = new Array(nFaces); - this.halfedges = new Array(nHalfedges); - this.corners = new Array(nInteriorHalfedges); - } - - /** - * Checks whether this mesh has isolated vertices. - * @private - * @method module:Core.Mesh#hasIsolatedVertices - * @returns {boolean} - */ - hasIsolatedVertices() { - for (let v of this.vertices) { - if (v.isIsolated()) { - alert("Mesh has isolated vertices!"); - return true; - } - } - - return false; - } - - /** - * Checks whether this mesh has isolated faces. - * @private - * @method module:Core.Mesh#hasIsolatedFaces - * @returns {boolean} - */ - hasIsolatedFaces() { - for (let f of this.faces) { - let boundaryEdges = 0; - for (let h of f.adjacentHalfedges()) { - if (h.twin.onBoundary) boundaryEdges++; - } - - if (boundaryEdges === 3) { - alert("Mesh has isolated faces!"); - return true; - } - } - - return false; - } - - /** - * Checks whether this mesh has non-manifold vertices. - * @private - * @method module:Core.Mesh#hasNonManifoldVertices - * @returns {boolean} - */ - hasNonManifoldVertices() { - let adjacentFaces = new Map(); - for (let v of this.vertices) { - adjacentFaces.set(v, 0); - } - - for (let f of this.faces) { - for (let v of f.adjacentVertices()) { - adjacentFaces.set(v, adjacentFaces.get(v) + 1); - } - } - - for (let b of this.boundaries) { - for (let v of b.adjacentVertices()) { - adjacentFaces.set(v, adjacentFaces.get(v) + 1); - } - } - - for (let v of this.vertices) { - if (adjacentFaces.get(v) !== v.degree()) { - return true; - } - } - - return false; - } - - /** - * Assigns indices to this mesh's elements. - * @private - * @method module:Core.Mesh#indexElements - */ - indexElements() { - let index = 0; - for (let v of this.vertices) { - v.index = index++; - } - - index = 0; - for (let e of this.edges) { - e.index = index++; - } - - index = 0; - for (let f of this.faces) { - f.index = index++; - } - - index = 0; - for (let h of this.halfedges) { - h.index = index++; - } - - index = 0; - for (let c of this.corners) { - c.index = index++; - } - - index = 0; - for (let b of this.boundaries) { - b.index = index++; - } - } -} - - -/** - * Assigns an index to each element in elementList. Indices can be accessed by using - * elements as keys in the returned dictionary. - * @global - * @function module:Core.indexElements - * @param {Object[]} elementList An array of any one of the following mesh elements - - * vertices, edges, faces, corners, halfedges, boundaries. - * @returns {Object} A dictionary mapping each element in elementList to a unique index - * between 0 and |elementList|-1. - * @example - * let vertexIndex = indexElements(mesh.vertices); - * let v = mesh.vertices[0]; - * let i = vertexIndex[v]; - * console.log(i); // prints 0 - */ -function indexElements(elementList) { - let i = 0; - let index = {}; - for (let element of elementList) { - index[element] = i++; - } - - return index; -} - -export { Mesh, indexElements } \ No newline at end of file diff --git a/node/core/vertex.js b/node/core/vertex.js deleted file mode 100644 index d3980b6..0000000 --- a/node/core/vertex.js +++ /dev/null @@ -1,338 +0,0 @@ -class Vertex { - /** - * This class represents a vertex in a {@link module:Core.Mesh Mesh}. - * @constructor module:Core.Vertex - * @property {module:Core.Halfedge} halfedge One of the outgoing halfedges associated with this vertex. - */ - constructor() { - this.halfedge = undefined; - this.index = -1; // an ID between 0 and |V| - 1, where |V| is the number of vertices in a mesh - } - - /** - * Counts the number of edges adjacent to this vertex. - * @method module:Core.Vertex#degree - * @returns {number} - */ - degree() { - let k = 0; - for (let e of this.adjacentEdges()) { - k++; - } - - return k; - } - - /** - * Checks whether this vertex is isolated, i.e., it has no neighboring vertices. - * @method module:Core.Vertex#isIsolated - * @returns {boolean} - */ - isIsolated() { - return this.halfedge === undefined; - } - - /** - * Checks whether this vertex lies on a boundary. - * @method module:Core.Vertex#onBoundary - * @returns {boolean} - */ - onBoundary() { - for (let h of this.adjacentHalfedges()) { - if (h.onBoundary) { - return true; - } - } - - return false; - } - - /** - * Convenience function to iterate over the vertices neighboring this vertex. - * @method module:Core.Vertex#adjacentVertices - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Vertex} - * @example - * let v = mesh.vertices[0]; - * for (let u of v.adjacentVertices()) { - * // Do something with u - * } - */ - adjacentVertices(ccw = true) { - return new VertexVertexIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the edges adjacent to this vertex. - * @method module:Core.Vertex#adjacentEdges - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Edge} - * @example - * let v = mesh.vertices[0]; - * for (let e of v.adjacentEdges()) { - * // Do something with e - * } - */ - adjacentEdges(ccw = true) { - return new VertexEdgeIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the faces adjacent to this vertex. - * @method module:Core.Vertex#adjacentFaces - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Face} - * @example - * let v = mesh.vertices[0]; - * for (let f of v.adjacentFaces()) { - * // Do something with f - * } - */ - adjacentFaces(ccw = true) { - return new VertexFaceIterator(this.halfedge, ccw); - } - - /** - * Convenience function to iterate over the halfedges adjacent to this vertex. - * @method module:Core.Vertex#adjacentHalfedges - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Halfedge} - * @example - * let v = mesh.vertices[0]; - * for (let h of v.adjacentHalfedges()) { - * // Do something with h - * } - */ - adjacentHalfedges(ccw = true) { - return new VertexHalfedgeIterator(this.halfedge, ccw); // outgoing halfedges - } - - /** - * Convenience function to iterate over the corners adjacent to this vertex. - * @method module:Core.Vertex#adjacentCorners - * @param {boolean} ccw A flag indicating whether iteration should be in CCW or CW order. - * @returns {module:Core.Corner} - * @example - * let v = mesh.vertices[0]; - * for (let c of v.adjacentCorners()) { - * // Do something with c - * } - */ - adjacentCorners(ccw = true) { - return new VertexCornerIterator(this.halfedge, ccw); - } - - /** - * Defines a string representation for this vertex as its index. - * @ignore - * @method module:Core.Vertex#toString - * @returns {string} - */ - toString() { - return this.index; - } -} - -/** - * This class represents an adjacent vertex iterator for a {@link module:Core.Vertex Vertex}. - * @ignore - * @memberof module:Core - */ -class VertexVertexIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let vertex = this.current.twin.vertex; - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - return { - done: false, - value: vertex - } - } - } - } - } -} - -/** - * This class represents an adjacent edge iterator for a {@link module:Core.Vertex Vertex}. - * @ignore - * @memberof module:Core - */ -class VertexEdgeIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let edge = this.current.edge; - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - return { - done: false, - value: edge - } - } - } - } - } -} - -/** - * This class represents an adjacent face iterator for a {@link module:Core.Vertex Vertex}. - * @ignore - * @memberof module:Core - */ -class VertexFaceIterator { - // constructor - constructor(halfedge, ccw) { - while (halfedge.onBoundary) { - halfedge = halfedge.twin.next; - } // halfedge must not be on the boundary - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - while (this.current.onBoundary) { - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - } // halfedge must not be on the boundary - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let face = this.current.face; - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - return { - done: false, - value: face - } - } - } - } - } -} - -/** - * This class represents an adjacent halfedge iterator for a {@link module:Core.Vertex Vertex}. - * @ignore - * @memberof module:Core - */ -class VertexHalfedgeIterator { - // constructor - constructor(halfedge, ccw) { - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let halfedge = this.current; - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - return { - done: false, - value: halfedge - } - } - } - } - } -} - -/** - * This class represents an adjacent corner iterator for a {@link module:Core.Vertex Vertex}. - * @ignore - * @memberof module:Core - */ -class VertexCornerIterator { - // constructor - constructor(halfedge, ccw) { - while (halfedge.onBoundary) { - halfedge = halfedge.twin.next; - } // halfedge must not be on the boundary - this._halfedge = halfedge; - this._ccw = ccw; - } - - [Symbol.iterator]() { - return { - current: this._halfedge, - end: this._halfedge, - ccw: this._ccw, - justStarted: true, - next() { - while (this.current.onBoundary) { - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - } // halfedge must not be on the boundary - if (!this.justStarted && this.current === this.end) { - return { - done: true - }; - - } else { - this.justStarted = false; - let corner = this.current.next.corner; - this.current = this.ccw ? this.current.twin.next : this.current.prev.twin; - return { - done: false, - value: corner - } - } - } - } - } -} - -export default Vertex; \ No newline at end of file diff --git a/node/linear-algebra/complex-dense-matrix.js b/node/linear-algebra/complex-dense-matrix.js deleted file mode 100644 index 3bf9047..0000000 --- a/node/linear-algebra/complex-dense-matrix.js +++ /dev/null @@ -1,294 +0,0 @@ -import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; -import Complex from './complex.js'; - -class ComplexDenseMatrix { - /** - * This class represents a m by n complex matrix where every entry, including - * zero-valued entries, is stored explicitly. Do not create a ComplexDenseMatrix - * from its constructor, instead use static factory methods such as zeros, - * identity, ones, constant and random. - * @constructor ComplexDenseMatrix - * @example - * let A = ComplexDenseMatrix.zeros(20, 5); - * let B = ComplexDenseMatrix.identity(10, 10); - * let C = ComplexDenseMatrix.ones(100, 1); - * let D = ComplexDenseMatrix.constant(new Complex(1, 2), 5, 5); - * let E = ComplexDenseMatrix.random(5, 20); - */ - constructor(data) { - this.data = data; - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this dense matrix. - * @ignore - * @method ComplexDenseMatrix#delete - */ - delete() { - this.data.delete(); - } - - /** - * Initializes a m by n matrix of zeros. - * @method ComplexDenseMatrix.zeros - * @param {number} m The number of rows in this complex dense matrix. - * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - static zeros(m, n = 1) { - return new ComplexDenseMatrix(new Module.ComplexDenseMatrix(m, n)); - } - - /** - * Initializes a m by n identity matrix. - * @method ComplexDenseMatrix.identity - * @param {number} m The number of rows in this complex dense matrix. - * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - static identity(m, n = 1) { - return new ComplexDenseMatrix(Module.ComplexDenseMatrix.identity(m, n)); - } - - /** - * Initializes a m by n matrix of ones. - * @method ComplexDenseMatrix.ones - * @param {number} m The number of rows in this complex dense matrix. - * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - static ones(m, n = 1) { - return new ComplexDenseMatrix(Module.ComplexDenseMatrix.ones(m, n)); - } - - /** - * Initializes a m by n constant matrix. - * @method ComplexDenseMatrix.constant - * @param {Complex} x The constant value stored in every entry of this complex dense matrix. - * @param {number} m The number of rows in this complex dense matrix. - * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - static constant(x, m, n = 1) { - return new ComplexDenseMatrix(Module.ComplexDenseMatrix.constant(m, n, x.data)); - } - - /** - * Initializes a m by n random matrix. - * @method ComplexDenseMatrix.random - * @param {number} m The number of rows in this complex dense matrix. - * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - static random(m, n = 1) { - return new ComplexDenseMatrix(Module.ComplexDenseMatrix.random(m, n)); - } - - /** - * Returns the transpose of this complex dense matrix. - * @method ComplexDenseMatrix#transpose - * @returns {ComplexDenseMatrix} - */ - transpose() { - return new ComplexDenseMatrix(this.data.transpose()); - } - - /** - * Returns the conjugate of this complex dense matrix. - * @method ComplexDenseMatrix#conjugate - * @returns {ComplexDenseMatrix} - */ - conjugate() { - return new ComplexDenseMatrix(this.data.conjugate()); - } - - /** - * Returns the number of rows in this complex dense matrix. - * @method ComplexDenseMatrix#nRows - * @returns {number} - */ - nRows() { - return this.data.nRows(); - } - - /** - * Returns the number of columns in this complex dense matrix. - * @method ComplexDenseMatrix#nCols - * @returns {number} - */ - nCols() { - return this.data.nCols(); - } - - /** - * Computes the lInfinity, l1 or l2 norm of this complex dense matrix. - * @method ComplexDenseMatrix#norm - * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 - * and l2 norm if n = 2. - * @returns {number} - */ - norm(n = 2) { - return this.data.norm(n); - } - - /** - * Returns the rank of this complex dense matrix. - * @method ComplexDenseMatrix#rank - * @returns {number} - */ - rank() { - return this.data.rank(); - } - - /** - * Sums all the entries in this complex dense matrix. - * @method ComplexDenseMatrix#sum - * @returns {Complex} - */ - sum() { - let u = this.data.sum(); - return new Complex(Module.real(u), Module.imag(u)); - } - - /** - * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix - * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method ComplexDenseMatrix#subMatrix - * @param {number} r0 The start row index. - * @param {number} r1 The end row index (not included). - * @param {number} c0 The start column index. - * @param {number} c1 The end column index (not included). - * @returns {ComplexDenseMatrix} - */ - subMatrix(r0, r1, c0 = 0, c1 = 1) { - return new ComplexDenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); - } - - /** - * A += B - * @method ComplexDenseMatrix#incrementBy - * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. - */ - incrementBy(B) { - this.data.incrementBy(B.data); - } - - /** - * A -= B - * @method ComplexDenseMatrix#decrementBy - * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this complex dense matrix. - */ - decrementBy(B) { - this.data.decrementBy(B.data); - } - - /** - * A *= s - * @method ComplexDenseMatrix#scaleBy - * @param {Complex} s The complex number this complex dense matrix is scaled by. - */ - scaleBy(s) { - this.data.scaleBy(s.data); - } - - /** - * Returns A + B - * @method ComplexDenseMatrix#plus - * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - plus(B) { - return new ComplexDenseMatrix(this.data.plus(B.data)); - } - - /** - * Returns A - B - * @method ComplexDenseMatrix#minus - * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this - * complex dense matrix. - * @returns {ComplexDenseMatrix} - */ - minus(B) { - return new ComplexDenseMatrix(this.data.minus(B.data)); - } - - /** - * Returns A * s - * @method ComplexDenseMatrix#timesComplex - * @param {Complex} s The complex number this complex dense matrix is multiplied by. - * @returns {ComplexDenseMatrix} - */ - timesComplex(s) { - return new ComplexDenseMatrix(this.data.timesComplex(s.data)); - } - - /** - * Returns A * B - * @method ComplexDenseMatrix#timesDense - * @param {ComplexDenseMatrix} B The complex dense matrix this complex dense matrix - * is multiplied by. - * @returns {ComplexDenseMatrix} - */ - timesDense(B) { - return new ComplexDenseMatrix(this.data.timesDense(B.data)); - } - - /** - * Returns -A - * @method ComplexDenseMatrix#negated - * @return {ComplexDenseMatrix} - */ - negated() { - return new ComplexDenseMatrix(this.data.negated()); - } - - /** - * Returns A(i, j) - * @method ComplexDenseMatrix#get - * @param {number} i The ith row of this complex dense matrix. - * @param {number} j The jth column of this complex dense matrix. - * @return {Complex} - */ - get(i, j = 0) { - let u = this.data.get(i, j); - return new Complex(Module.real(u), Module.imag(u)); - } - - /** - * A(i, j) = x - * @method ComplexDenseMatrix#set - * @param {Complex} x The complex value the (i, j)th entry of this complex dense - * matrix is set to. - * @param {number} i The ith row of this complex dense matrix. - * @param {number} j The jth column of this complex dense matrix. - */ - set(x, i, j = 0) { - this.data.set(i, j, x.data); - } - - /** - * Concatenates two complex dense matrices horizontally. - * @method ComplexDenseMatrix#hcat - * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated horizontally - * with this complex dense matrix. - * @return {ComplexDenseMatrix} - */ - hcat(B) { - return new ComplexDenseMatrix(this.data.hcat(B.data)); - } - - /** - * Concatenates two complex dense matrices vertically. - * @method ComplexDenseMatrix#vcat - * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated vertically - * with this complex dense matrix. - * @return {ComplexDenseMatrix} - */ - vcat(B) { - return new ComplexDenseMatrix(this.data.vcat(B.data)); - } -} - -export default ComplexDenseMatrix; \ No newline at end of file diff --git a/node/linear-algebra/complex-sparse-matrix.js b/node/linear-algebra/complex-sparse-matrix.js deleted file mode 100644 index f4d1de1..0000000 --- a/node/linear-algebra/complex-sparse-matrix.js +++ /dev/null @@ -1,429 +0,0 @@ -import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; -import ComplexDenseMatrix from './complex-dense-matrix.js'; - -class ComplexSparseMatrix { - /** - * This class represents a m by n complex matrix where only nonzero entries - * are stored explicitly. Do not create a ComplexSparseMatrix from its constructor, - * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor ComplexSparseMatrix - * @example - * let T = new ComplexTriplet(100, 100); - * T.addEntry(new Complex(3.4, 6.4), 11, 43); - * T.addEntry(new Complex(6.4, 3.4), 99, 99); - * let A = ComplexSparseMatrix.fromTriplet(T); - * - * let B = ComplexSparseMatrix.identity(10, 10); - * - * let d = ComplexDenseMatrix.ones(100, 1); - * let C = ComplexSparseMatrix.diag(d); - */ - constructor(data) { - this.data = data; - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this complex sparse matrix. - * @ignore - * @method ComplexSparseMatrix#delete - */ - delete() { - this.data.delete(); - } - - /** - * Initializes a complex sparse matrix from a {@link ComplexTriplet} object. - * @method ComplexSparseMatrix.fromTriplet - * @param {ComplexTriplet} T A complex triplet object containing only the nonzero - * entries that need to be stored in this complex sparse matrix. - * @returns {ComplexSparseMatrix} - */ - static fromTriplet(T) { - return new ComplexSparseMatrix(new Module.ComplexSparseMatrix(T.data)); - } - - /** - * Initializes a m by n complex sparse identity matrix. - * @method ComplexSparseMatrix.identity - * @param {number} m The number of rows in this complex sparse matrix. - * @param {number} n The number of columns in this complex sparse matrix. - * @returns {ComplexSparseMatrix} - */ - static identity(m, n) { - return new ComplexSparseMatrix(Module.ComplexSparseMatrix.identity(m, n)); - } - - /** - * Initializes a complex sparse diagonal matrix. - * @method ComplexSparseMatrix.diag - * @param {ComplexDenseMatrix} d The complex dense vector (d.nCols() == 1) used - * to initialize this complex sparse diagonal matrix. - * @returns {ComplexSparseMatrix} - */ - static diag(d) { - return new ComplexSparseMatrix(Module.ComplexSparseMatrix.diag(d.data)); - } - - /** - * Returns the transpose of this complex sparse matrix. - * @method ComplexSparseMatrix#transpose - * @returns {ComplexSparseMatrix} - */ - transpose() { - return new ComplexSparseMatrix(this.data.transpose()); - } - - /** - * Returns the inverse of this diagonal complex sparse matrix. - * @method ComplexSparseMatrix#invertDiagonal - * @returns {ComplexSparseMatrix} - */ - invertDiagonal() { - let N = this.nRows(); - let X = this.timesDense(ComplexDenseMatrix.ones(N, 1)); - let T = new ComplexTriplet(N, N); - for (let i = 0; i < N; i++) { - T.addEntry(X.get(i, 0).inverse(), i, i); - } - - return ComplexSparseMatrix.fromTriplet(T); - } - - /** - * Returns the conjugate of this complex sparse matrix. - * @method ComplexSparseMatrix#conjugate - * @returns {ComplexSparseMatrix} - */ - conjugate() { - return new ComplexSparseMatrix(this.data.conjugate()); - } - - /** - * Returns the number of rows in this complex sparse matrix. - * @method ComplexSparseMatrix#nRows - * @returns {number} - */ - nRows() { - return this.data.nRows(); - } - - /** - * Returns the number of columns in this complex sparse matrix. - * @method ComplexSparseMatrix#nCols - * @returns {number} - */ - nCols() { - return this.data.nCols(); - } - - /** - * Returns the number of nonzero entries in this complex sparse matrix. - * @method ComplexSparseMatrix#nnz - * @returns {number} - */ - nnz() { - return this.data.nnz(); - } - - /** - * Computes the frobenius norm of this complex sparse matrix. - * @method ComplexSparseMatrix#frobeniusNorm - * @returns {number} - */ - frobeniusNorm() { - return this.data.frobeniusNorm(); - } - - /** - * Extracts a complex sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., - * a matrix of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method ComplexSparseMatrix#subMatrix - * @param {number} r0 The start row index. - * @param {number} r1 The end row index (not included). - * @param {number} c0 The start column index. - * @param {number} c1 The end column index (not included). - * @returns {ComplexSparseMatrix} - */ - subMatrix(r0, r1, c0, c1) { - return new ComplexSparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); - } - - /** - * Returns a sparse {@link ComplexCholesky} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#chol - * @returns {ComplexCholesky} - */ - chol() { - return new ComplexCholesky(this.data.chol()); - } - - /** - * Returns a sparse {@link ComplexLU} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#lu - * @returns {ComplexLU} - */ - lu() { - return new ComplexLU(this.data.lu()); - } - - /** - * Returns a sparse {@link ComplexQR} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#qr - * @returns {ComplexQR} - */ - qr() { - return new ComplexQR(this.data.qr()); - } - - /** - * Returns a dense copy of this complex sparse matrix. - * @method ComplexSparseMatrix#toDense - * @returns {ComplexDenseMatrix} - */ - toDense() { - return new ComplexDenseMatrix(this.data.toDense()); - } - - /** - * A += B - * @method ComplexSparseMatrix#incrementBy - * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex - * sparse matrix. - */ - incrementBy(B) { - this.data.incrementBy(B.data); - } - - /** - * A -= B - * @method ComplexSparseMatrix#decrementBy - * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from - * this complex sparse matrix. - */ - decrementBy(B) { - this.data.decrementBy(B.data); - } - - /** - * A *= s - * @method ComplexSparseMatrix#scaleBy - * @param {Complex} s The complex number this complex sparse matrix is scaled by. - */ - scaleBy(s) { - this.data.scaleBy(s.data); - } - - /** - * Returns A + B - * @method ComplexSparseMatrix#plus - * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex - * sparse matrix. - * @returns {ComplexSparseMatrix} - */ - plus(B) { - return new ComplexSparseMatrix(this.data.plus(B.data)); - } - - /** - * Returns A - B - * @method ComplexSparseMatrix#minus - * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from this - * complex sparse matrix. - * @returns {ComplexSparseMatrix} - */ - minus(B) { - return new ComplexSparseMatrix(this.data.minus(B.data)); - } - - /** - * Returns A * s - * @method ComplexSparseMatrix#timesComplex - * @param {Complex} s The complex number this complex sparse matrix is multiplied by. - * @returns {ComplexSparseMatrix} - */ - timesComplex(s) { - return new ComplexSparseMatrix(this.data.timesComplex(s.data)); - } - - /** - * Returns A * X - * @method ComplexSparseMatrix#timesDense - * @param {ComplexDenseMatrix} X The complex dense matrix this complex sparse matrix - * is multiplied by. - * @returns {ComplexDenseMatrix} - */ - timesDense(X) { - return new ComplexDenseMatrix(this.data.timesDense(X.data)); - } - - /** - * Returns A * B - * @method ComplexSparseMatrix#timesSparse - * @param {ComplexSparseMatrix} B The complex sparse matrix this complex sparse matrix - * is multiplied by. - * @returns {ComplexSparseMatrix} - */ - timesSparse(B) { - return new ComplexSparseMatrix(this.data.timesSparse(B.data)); - } -} - -class ComplexTriplet { - /** - * This class represents a small structure to hold nonzero entries in a {@link ComplexSparseMatrix}. - * Each entry is a triplet of a complex value and the (i, j)th indices, i.e., (x, i, j). - * @constructor ComplexTriplet - * @param {number} m The number of rows in the complex sparse matrix that will be - * initialized from this complex triplet. - * @param {number} n The number of columns in the complex sparse matrix that will be - * initialized from this complex triplet. - * @example - * let T = new ComplexTriplet(100, 100); - * T.addEntry(new Complex(3.4, 6.4), 11, 43); - * T.addEntry(new Complex(6.4, 3.4), 99, 99); - * - * let A = ComplexSparseMatrix.fromTriplet(T); - */ - constructor(m, n) { - this.data = new Module.ComplexTriplet(m, n); - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this sparse matrix. - * @ignore - * @method ComplexTriplet#delete - */ - delete() { - this.data.delete(); - } - - /** - * A(i, j) += x - * @method ComplexTriplet#addEntry - * @param {number} x The value of the nonzero entry being inserted into this - * complex triplet. - * @param {number} i The ith row of the complex sparse matrix that will be initialized - * from this complex triplet. - * @param {number} j The jth column of the complex sparse matrix that will be - * initialized from this complex triplet. - */ - addEntry(x, i, j) { - this.data.addEntry(i, j, x.data); - } -} - -class ComplexCholesky { - /** - * This class represents a complex Choleksy LL^T factorization of a square and - * positive definite {@link ComplexSparseMatrix}. The factorization is computed on the - * first call to solvePositiveDefinite, and is reused in subsequent calls to - * solvePositiveDefinite (e.g. when only the right hand side b of the linear system - * Ax = b changes) unless the complex sparse matrix itself is altered through - * operations such as *=, += and -=. Do not use the constructor to initialize - * this class, instead access the complex Choleksy factorization of a complex - * sparse matrix directly from the matrix itself. - * @constructor ComplexCholesky - * @example - * // solve the linear system Ax = b, where A is a square - * // and complex positive definite sparse matrix - * let A = ComplexSparseMatrix.identity(5, 5); - * let b = ComplexDenseMatrix.ones(5, 1); - * - * let llt = A.chol(); - * let x = llt.solvePositiveDefinite(b); - * - * b.scaleBy(new Complex(5, 0)); - * x = llt.solvePositiveDefinite(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a square and complex positive - * definite sparse matrix. - * @method ComplexCholesky#solvePositiveDefinite - * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} - */ - solvePositiveDefinite(b) { - return new ComplexDenseMatrix(this.data.solvePositiveDefinite(b.data)); - } -} - -class ComplexLU { - /** - * This class represents a complex LU factorization of a square {@link ComplexSparseMatrix}. - * The factorization is computed on the first call to solveSquare, and is reused - * in subsequent calls to solveSquare (e.g. when only the right hand side b - * of the linear system Ax = b changes) unless the complex sparse matrix itself - * is altered through operations such as *=, += and -=. Do not use the constructor - * to initialize this class, instead access the complex LU factorization - * of a complex sparse matrix directly from the matrix itself. - * @constructor ComplexLU - * @example - * // solve the linear system Ax = b, where A is a square and complex sparse matrix - * let A = ComplexSparseMatrix.identity(5, 5); - * let b = ComplexDenseMatrix.ones(5, 1); - * - * let lu = A.lu(); - * let x = lu.solveSquare(b); - * - * b.scaleBy(new Complex(5, 0)); - * x = lu.solveSquare(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a square and complex sparse matrix. - * @method ComplexLU#solveSquare - * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} - */ - solveSquare(b) { - return new ComplexDenseMatrix(this.data.solveSquare(b.data)); - } -} - -class ComplexQR { - /** - * This class represents a complex QR factorization of a rectangular {@link ComplexSparseMatrix}. - * The factorization is computed on the first call to solve, and is reused in - * subsequent calls to solve (e.g. when only the right hand side b of the linear - * system Ax = b changes) unless the complex sparse matrix itself is altered - * through operations such as *=, += and -=. Do not use the constructor to initialize - * this class, instead access the complex QR factorization of a complex sparse - * matrix directly from the matrix itself. - * @constructor ComplexQR - * @example - * // solve the linear system Ax = b, where A is a rectangular and complex sparse matrix - * let A = ComplexSparseMatrix.identity(5, 5); - * let b = ComplexDenseMatrix.ones(5, 1); - * - * let qr = A.qr(); - * let x = qr.solve(b); - * - * b.scaleBy(Complex(5, 0)); - * x = qr.solve(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a rectangular and complex sparse matrix. - * @method ComplexQR#solve - * @param {ComplexDenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} - */ - solve(b) { - return new ComplexDenseMatrix(this.data.solve(b.data)); - } -} - -export { ComplexSparseMatrix, ComplexTriplet }; \ No newline at end of file diff --git a/node/linear-algebra/complex.js b/node/linear-algebra/complex.js deleted file mode 100644 index 8bbae15..0000000 --- a/node/linear-algebra/complex.js +++ /dev/null @@ -1,182 +0,0 @@ -import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; - -class Complex { - /** - * This class represents a complex number a + bi. - * @constructor Complex - * @param {number} re The real component of this complex number. - * @param {number} im The imaginary component of this complex number. - */ - constructor(re = 0, im = 0) { - this.data = new Module.Complex(re, im); - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this complex number. - * @method Complex#delete - * @ignore - */ - delete() { - this.data.delete(); - } - - /** - * The real component of this complex number. - * @member Complex#re - * @type {number} - */ - get re() { - return Module.real(this.data); - } - - /** - * The imaginary component of this complex number. - * @member Complex#im - * @type {number} - */ - get im() { - return Module.imag(this.data); - } - - /** - * Computes the phase angle of this complex number. - * @method Complex#arg - * @returns {number} - */ - arg() { - return Math.atan2(this.im, this.re); - } - - /** - * Computes the norm of this complex number. - * @method Complex#norm - * @returns {number} - */ - norm() { - return Math.sqrt(this.norm2()); - } - - /** - * Computes the squared norm of this complex number. - * @method Complex#norm2 - * @returns {number} - */ - norm2() { - return this.re * this.re + this.im * this.im; - } - - /** - * Computes a - bi - * @method Complex#conjugate - * @returns {Complex} - */ - conjugate() { - return new Complex(this.re, -this.im); - } - - /** - * Computes (a + bi)^-1 - * @method Complex#inverse - * @returns {Complex} - */ - inverse() { - return this.conjugate().overReal(this.norm2()); - } - - /** - * Computes the polar form ae^(iθ), where a is the norm and θ is the - * phase angle of this complex number. - * @method Complex#polar - * @returns {Complex} - */ - polar() { - let a = this.norm(); - let theta = this.arg(); - - return new Complex(Math.cos(theta) * a, Math.sin(theta) * a); - } - - /** - * Exponentiates this complex number. - * @method Complex#exp - * @returns {Complex} - */ - exp() { - let a = Math.exp(this.re); - let theta = this.im; - - return new Complex(Math.cos(theta) * a, Math.sin(theta) * a); - } - - /** - * Returns u + v - * @method Complex#plus - * @param {Complex} v The complex number added to this complex number. - * @return {Complex} - */ - plus(v) { - return new Complex(this.re + v.re, this.im + v.im); - } - - /** - * Returns u - v - * @method Complex#minus - * @param {Complex} v The complex number subtracted from this complex number. - * @return {Complex} - */ - minus(v) { - return new Complex(this.re - v.re, this.im - v.im); - } - - /** - * Returns u * s - * @method Complex#timesReal - * @param {number} s The number this complex number is multiplied by. - * @return {Complex} - */ - timesReal(s) { - return new Complex(this.re * s, this.im * s); - } - - /** - * Returns u / s - * @method Complex#overReal - * @param {number} s The number this complex number is divided by. - * @return {Complex} - */ - overReal(s) { - return this.timesReal(1 / s); - } - - /** - * Returns u * v - * @method Complex#timesComplex - * @param {Complex} v The complex number this complex number is multiplied by. - * @return {Complex} - */ - timesComplex(v) { - let a = this.re; - let b = this.im; - let c = v.re; - let d = v.im; - - let re = a * c - b * d; - let im = a * d + b * c; - - return new Complex(re, im); - } - - /** - * Returns u / v - * @method Complex#overComplex - * @param {Complex} v The complex number this complex number is divided by. - * @return {Complex} - */ - overComplex(v) { - return this.timesComplex(v.inverse()); - } -} - -export default Complex; \ No newline at end of file diff --git a/node/linear-algebra/dense-matrix.js b/node/linear-algebra/dense-matrix.js deleted file mode 100644 index 494f98e..0000000 --- a/node/linear-algebra/dense-matrix.js +++ /dev/null @@ -1,279 +0,0 @@ -import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; - -class DenseMatrix { - /** - * This class represents a real m by n real matrix where every entry, including - * zero-valued entries, is stored explicitly. Do not create a DenseMatrix - * from its constructor, instead use static factory methods such as zeros, - * identity, ones, constant and random. - * @constructor DenseMatrix - * @example - * let A = DenseMatrix.zeros(20, 5); - * let B = DenseMatrix.identity(10, 10); - * let C = DenseMatrix.ones(100, 1); - * let D = DenseMatrix.constant(4.6, 5, 5); - * let E = DenseMatrix.random(5, 20); - */ - constructor(data) { - this.data = data; - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this dense matrix. - * @ignore - * @method DenseMatrix#delete - */ - delete() { - this.data.delete(); - } - - /** - * Initializes a m by n matrix of zeros. - * @method DenseMatrix.zeros - * @param {number} m The number of rows in this dense matrix. - * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} - */ - static zeros(m, n = 1) { - return new DenseMatrix(new Module.DenseMatrix(m, n)); - } - - /** - * Initializes a m by n identity matrix. - * @method DenseMatrix.identity - * @param {number} m The number of rows in this dense matrix. - * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} - */ - static identity(m, n = 1) { - return new DenseMatrix(Module.DenseMatrix.identity(m, n)); - } - - /** - * Initializes a m by n matrix of ones. - * @method DenseMatrix.ones - * @param {number} m The number of rows in this dense matrix. - * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} - */ - static ones(m, n = 1) { - return new DenseMatrix(Module.DenseMatrix.ones(m, n)); - } - - /** - * Initializes a m by n constant matrix. - * @method DenseMatrix.constant - * @param {number} x The constant value stored in every entry of this dense matrix. - * @param {number} m The number of rows in this dense matrix. - * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} - */ - static constant(x, m, n = 1) { - return new DenseMatrix(Module.DenseMatrix.constant(m, n, x)); - } - - /** - * Initializes a m by n random matrix. - * @method DenseMatrix.random - * @param {number} m The number of rows in this dense matrix. - * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} - */ - static random(m, n = 1) { - return new DenseMatrix(Module.DenseMatrix.random(m, n)); - } - - /** - * Returns the transpose of this dense matrix. - * @method DenseMatrix#transpose - * @returns {DenseMatrix} - */ - transpose() { - return new DenseMatrix(this.data.transpose()); - } - - /** - * Returns the number of rows in this dense matrix. - * @method DenseMatrix#nRows - * @returns {number} - */ - nRows() { - return this.data.nRows(); - } - - /** - * Returns the number of columns in this dense matrix. - * @method DenseMatrix#nCols - * @returns {number} - */ - nCols() { - return this.data.nCols(); - } - - /** - * Computes the lInfinity, l1 or l2 norm of this dense matrix. - * @method DenseMatrix#norm - * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 - * and l2 norm if n = 2. - * @returns {number} - */ - norm(n = 2) { - return this.data.norm(n); - } - - /** - * Returns the rank of this dense matrix. - * @method DenseMatrix#rank - * @returns {number} - */ - rank() { - return this.data.rank(); - } - - /** - * Sums all the entries in this dense matrix. - * @method DenseMatrix#sum - * @returns {number} - */ - sum() { - return this.data.sum(); - } - - /** - * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix - * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method DenseMatrix#subMatrix - * @param {number} r0 The start row index. - * @param {number} r1 The end row index (not included). - * @param {number} c0 The start column index. - * @param {number} c1 The end column index (not included). - * @returns {DenseMatrix} - */ - subMatrix(r0, r1, c0 = 0, c1 = 1) { - return new DenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); - } - - /** - * A += B - * @method DenseMatrix#incrementBy - * @param {DenseMatrix} B The dense matrix added to this dense matrix. - */ - incrementBy(B) { - this.data.incrementBy(B.data); - } - - /** - * A -= B - * @method DenseMatrix#decrementBy - * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. - */ - decrementBy(B) { - this.data.decrementBy(B.data); - } - - /** - * A *= s - * @method DenseMatrix#scaleBy - * @param {number} s The number this dense matrix is scaled by. - */ - scaleBy(s) { - this.data.scaleBy(s); - } - - /** - * Returns A + B - * @method DenseMatrix#plus - * @param {DenseMatrix} B The dense matrix added to this dense matrix. - * @returns {DenseMatrix} - */ - plus(B) { - return new DenseMatrix(this.data.plus(B.data)); - } - - /** - * Returns A - B - * @method DenseMatrix#minus - * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. - * @returns {DenseMatrix} - */ - minus(B) { - return new DenseMatrix(this.data.minus(B.data)); - } - - /** - * Returns A * s - * @method DenseMatrix#timesReal - * @param {number} s The number this dense matrix is multiplied by. - * @returns {DenseMatrix} - */ - timesReal(s) { - return new DenseMatrix(this.data.timesReal(s)); - } - - /** - * Returns A * B - * @method DenseMatrix#timesDense - * @param {DenseMatrix} B The dense matrix this dense matrix is multiplied by. - * @returns {DenseMatrix} - */ - timesDense(B) { - return new DenseMatrix(this.data.timesDense(B.data)); - } - - /** - * Returns -A - * @method DenseMatrix#negated - * @return {DenseMatrix} - */ - negated() { - return new DenseMatrix(this.data.negated()); - } - - /** - * Returns A(i, j) - * @method DenseMatrix#get - * @param {number} i The ith row of this dense matrix. - * @param {number} j The jth column of this dense matrix. - * @return {number} - */ - get(i, j = 0) { - return this.data.get(i, j); - } - - /** - * A(i, j) = x - * @method DenseMatrix#set - * @param {number} x The real value the (i, j)th entry of this dense matrix is set to. - * @param {number} i The ith row of this dense matrix. - * @param {number} j The jth column of this dense matrix. - */ - set(x, i, j = 0) { - this.data.set(i, j, x); - } - - /** - * Concatenates two dense matrices horizontally. - * @method DenseMatrix#hcat - * @param {DenseMatrix} B The dense matrix that is concatenated horizontally - * with this dense matrix. - * @return {DenseMatrix} - */ - hcat(B) { - return new DenseMatrix(this.data.hcat(B.data)); - } - - /** - * Concatenates two dense matrices vertically. - * @method DenseMatrix#vcat - * @param {DenseMatrix} B The dense matrix that is concatenated vertically - * with this dense matrix. - * @return {DenseMatrix} - */ - vcat(B) { - return new DenseMatrix(this.data.vcat(B.data)); - } -} - -export default DenseMatrix; \ No newline at end of file diff --git a/node/linear-algebra/emscripten-memory-manager.js b/node/linear-algebra/emscripten-memory-manager.js deleted file mode 100644 index 16b0e65..0000000 --- a/node/linear-algebra/emscripten-memory-manager.js +++ /dev/null @@ -1,55 +0,0 @@ -class EmscriptenMemoryManager { - /** - * This class serves as a semi automatic memory manager/garbage collector - * for objects that internally store data and perform operations on the {@link http://emscripten.org emscripten} - * heap, and hence cannot be freed by the Javascript garbage collector. These - * include {@link DenseMatrix}, {@link SparseMatrix}, {@link Triplet}, {@link Complex}, {@link ComplexDenseMatrix}, - * {@link ComplexSparseMatrix} and {@link ComplexTriplet}. Since operations involving the above - * matrices and linear algebra entities are frequent and generate a lot of intermediate - * variables, EmscriptenMemoryManager automatically tracks all objects that are - * allocated on the emscripten heap to ease the burden of manual memory management. - * The user is required to inform the EmscriptenMemoryManager about when it should - * clear the heap and which objects it should *not* delete while doing so. - * @constructor EmscriptenMemoryManager - * @property {Object[]} objectList Array of objects allocated on the emscripten heap. - * @example - * let memoryManager = new EmscriptenMemoryManager(); - * - * let A = SparseMatrix.identity(100, 100); - * let x = DenseMatrix.random(100, 1); - * let B = A.timesDense(x).plus(x); - * - * // delete all objects created in the previous three calls except B - * memoryManager.deleteExcept([B]); - */ - constructor() { - this.objectList = []; - } - - /** - * Deletes all objects in this memory manager's list of emscripten heap allocated - * objects except those in the array passed to this method. - * @method EmscriptenMemoryManager#deleteExcept - * @param {Object[]} exceptList Array of objects allocated on the emscripten heap - * that should not to be deleted. - */ - deleteExcept(exceptList) { - for (let object of this.objectList) { - let deleteObject = true; - - for (let except of exceptList) { - if (object === except) { - deleteObject = false; - } - } - - if (deleteObject) { - object.delete(); - } - } - - this.objectList = exceptList; - } -} - -module.exports = new EmscriptenMemoryManager() \ No newline at end of file diff --git a/node/linear-algebra/linear-algebra-asm.js b/node/linear-algebra/linear-algebra-asm.js deleted file mode 100644 index f16b84d..0000000 --- a/node/linear-algebra/linear-algebra-asm.js +++ /dev/null @@ -1,26 +0,0 @@ -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_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}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"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}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(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return xhr.response}}Module["readAsync"]=function readAsync(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)};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.warn(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_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&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"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}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]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),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)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),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)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);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 ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}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 JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"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){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>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=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,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>2]=0}stop=ret+size;while(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>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){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}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){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 -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["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;var runtimeExited=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__);runtimeExited=true}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"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;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"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];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_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}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 ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+35600;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_embind_cpp()})},{func:(function(){__GLOBAL__sub_I_bind_cpp()})});allocate([208,40,0,0,76,46,0,0,80,41,0,0,93,46,0,0,0,0,0,0,8,0,0,0,80,41,0,0,111,46,0,0,1,0,0,0,8,0,0,0,208,40,0,0,168,61,0,0,80,41,0,0,180,61,0,0,0,0,0,0,48,0,0,0,80,41,0,0,193,61,0,0,1,0,0,0,48,0,0,0,208,40,0,0,207,61,0,0,80,41,0,0,225,61,0,0,0,0,0,0,88,0,0,0,80,41,0,0,244,61,0,0,1,0,0,0,88,0,0,0,208,40,0,0,85,66,0,0,80,41,0,0,71,66,0,0,0,0,0,0,128,0,0,0,208,40,0,0,106,66,0,0,80,41,0,0,98,66,0,0,0,0,0,0,152,0,0,0,208,40,0,0,121,66,0,0,80,41,0,0,113,66,0,0,0,0,0,0,176,0,0,0,80,41,0,0,133,67,0,0,1,0,0,0,128,0,0,0,80,41,0,0,117,72,0,0,1,0,0,0,152,0,0,0,56,0,0,0,0,0,0,0,48,3,0,0,5,0,0,0,6,0,0,0,200,255,255,255,200,255,255,255,48,3,0,0,7,0,0,0,8,0,0,0,248,40,0,0,230,77,0,0,48,3,0,0,0,0,0,0,248,40,0,0,44,78,0,0,40,3,0,0,0,0,0,0,80,41,0,0,173,78,0,0,1,0,0,0,176,0,0,0,208,40,0,0,118,82,0,0,80,41,0,0,138,82,0,0,0,0,0,0,64,1,0,0,80,41,0,0,159,82,0,0,1,0,0,0,64,1,0,0,208,40,0,0,186,82,0,0,80,41,0,0,221,82,0,0,0,0,0,0,104,1,0,0,80,41,0,0,1,83,0,0,1,0,0,0,104,1,0,0,208,40,0,0,51,83,0,0,80,41,0,0,81,83,0,0,0,0,0,0,144,1,0,0,80,41,0,0,112,83,0,0,1,0,0,0,144,1,0,0,208,40,0,0,144,83,0,0,80,41,0,0,180,83,0,0,0,0,0,0,184,1,0,0,80,41,0,0,217,83,0,0,1,0,0,0,184,1,0,0,208,40,0,0,31,84,0,0,80,41,0,0,255,83,0,0,0,0,0,0,224,1,0,0,208,40,0,0,88,84,0,0,80,41,0,0,62,84,0,0,0,0,0,0,248,1,0,0,208,40,0,0,139,84,0,0,80,41,0,0,113,84,0,0,0,0,0,0,16,2,0,0,80,41,0,0,164,84,0,0,1,0,0,0,224,1,0,0,80,41,0,0,197,84,0,0,1,0,0,0,248,1,0,0,80,41,0,0,224,84,0,0,1,0,0,0,16,2,0,0,108,41,0,0,200,89,0,0,0,0,0,0,1,0,0,0,8,3,0,0,0,0,0,0,108,41,0,0,137,89,0,0,0,0,0,0,1,0,0,0,8,3,0,0,0,0,0,0,108,41,0,0,36,89,0,0,0,0,0,0,1,0,0,0,8,3,0,0,0,0,0,0,208,40,0,0,17,89,0,0,208,40,0,0,242,88,0,0,208,40,0,0,211,88,0,0,208,40,0,0,180,88,0,0,208,40,0,0,149,88,0,0,208,40,0,0,118,88,0,0,208,40,0,0,87,88,0,0,208,40,0,0,56,88,0,0,208,40,0,0,25,88,0,0,208,40,0,0,250,87,0,0,208,40,0,0,219,87,0,0,208,40,0,0,188,87,0,0,208,40,0,0,157,87,0,0,208,40,0,0,99,89,0,0,248,40,0,0,19,101,0,0,32,3,0,0,0,0,0,0,208,40,0,0,1,101,0,0,208,40,0,0,61,101,0,0,108,41,0,0,110,101,0,0,0,0,0,0,1,0,0,0,16,3,0,0,3,244,255,255,248,40,0,0,157,101,0,0,88,3,0,0,0,0,0,0,248,40,0,0,177,101,0,0,168,7,0,0,0,0,0,0,248,40,0,0,199,101,0,0,88,3,0,0,0,0,0,0,108,41,0,0,1,102,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,152,3,0,0,0,0,0,0,108,41,0,0,69,102,0,0,0,0,0,0,1,0,0,0,176,3,0,0,0,0,0,0,208,40,0,0,91,102,0,0,108,41,0,0,116,102,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,216,3,0,0,0,0,0,0,108,41,0,0,184,102,0,0,0,0,0,0,1,0,0,0,176,3,0,0,0,0,0,0,108,41,0,0,220,102,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,16,4,0,0,0,0,0,0,108,41,0,0,32,103,0,0,0,0,0,0,1,0,0,0,40,4,0,0,0,0,0,0,208,40,0,0,54,103,0,0,108,41,0,0,79,103,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,80,4,0,0,0,0,0,0,108,41,0,0,147,103,0,0,0,0,0,0,1,0,0,0,40,4,0,0,0,0,0,0,108,41,0,0,233,104,0,0,0,0,0,0,3,0,0,0,88,3,0,0,2,0,0,0,144,4,0,0,2,0,0,0,152,4,0,0,0,8,0,0,208,40,0,0,80,105,0,0,208,40,0,0,46,105,0,0,108,41,0,0,99,105,0,0,0,0,0,0,3,0,0,0,88,3,0,0,2,0,0,0,144,4,0,0,2,0,0,0,200,4,0,0,0,8,0,0,208,40,0,0,168,105,0,0,108,41,0,0,202,105,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,240,4,0,0,0,8,0,0,208,40,0,0,15,106,0,0,108,41,0,0,36,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,240,4,0,0,0,8,0,0,108,41,0,0,105,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,56,5,0,0,2,0,0,0,208,40,0,0,133,106,0,0,108,41,0,0,154,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,56,5,0,0,2,0,0,0,108,41,0,0,182,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,56,5,0,0,2,0,0,0,108,41,0,0,210,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,56,5,0,0,2,0,0,0,108,41,0,0,253,106,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,192,5,0,0,0,0,0,0,208,40,0,0,67,107,0,0,108,41,0,0,103,107,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,232,5,0,0,0,0,0,0,208,40,0,0,173,107,0,0,108,41,0,0,204,107,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,16,6,0,0,0,0,0,0,208,40,0,0,18,108,0,0,108,41,0,0,43,108,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,56,6,0,0,0,0,0,0,208,40,0,0,113,108,0,0,108,41,0,0,138,108,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,96,6,0,0,2,0,0,0,208,40,0,0,159,108,0,0,108,41,0,0,54,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,96,6,0,0,2,0,0,0,248,40,0,0,183,108,0,0,152,6,0,0,0,0,0,0,108,41,0,0,218,108,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,184,6,0,0,2,0,0,0,208,40,0,0,253,108,0,0,248,40,0,0,20,109,0,0,152,6,0,0,0,0,0,0,108,41,0,0,75,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,184,6,0,0,2,0,0,0,108,41,0,0,109,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,184,6,0,0,2,0,0,0,108,41,0,0,143,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,184,6,0,0,2,0,0,0,248,40,0,0,178,109,0,0,88,3,0,0,0,0,0,0,108,41,0,0,200,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,96,7,0,0,2,0,0,0,208,40,0,0,218,109,0,0,108,41,0,0,239,109,0,0,0,0,0,0,2,0,0,0,88,3,0,0,2,0,0,0,96,7,0,0,2,0,0,0,248,40,0,0,1,110,0,0,88,3,0,0,0,0,0,0,248,40,0,0,22,110,0,0,88,3,0,0,0,0,0,0,208,40,0,0,166,110,0,0,208,40,0,0,170,112,0,0,248,40,0,0,10,113,0,0,200,7,0,0,0,0,0,0,248,40,0,0,183,112,0,0,216,7,0,0,0,0,0,0,208,40,0,0,216,112,0,0,248,40,0,0,229,112,0,0,184,7,0,0,0,0,0,0,248,40,0,0,251,113,0,0,176,7,0,0,0,0,0,0,248,40,0,0,44,114,0,0,200,7,0,0,0,0,0,0,248,40,0,0,8,114,0,0,0,8,0,0,0,0,0,0,248,40,0,0,78,114,0,0,200,7,0,0,0,0,0,0,52,41,0,0,118,114,0,0,52,41,0,0,120,114,0,0,52,41,0,0,123,114,0,0,52,41,0,0,125,114,0,0,52,41,0,0,127,114,0,0,52,41,0,0,129,114,0,0,52,41,0,0,131,114,0,0,52,41,0,0,133,114,0,0,52,41,0,0,135,114,0,0,52,41,0,0,137,114,0,0,52,41,0,0,223,119,0,0,52,41,0,0,139,114,0,0,52,41,0,0,141,114,0,0,52,41,0,0,143,114,0,0,248,40,0,0,145,114,0,0,184,7,0,0,0,0,0,0,16,0,0,0,112,8,0,0,112,8,0,0,16,0,0,0,8,0,0,0,8,0,0,0,112,8,0,0,112,8,0,0,8,0,0,0,112,8,0,0,112,8,0,0,152,8,0,0,8,0,0,0,32,0,0,0,112,8,0,0,32,0,0,0,152,8,0,0,32,0,0,0,112,8,0,0,152,8,0,0,32,0,0,0,8,0,0,0,32,0,0,0,112,8,0,0,112,8,0,0,112,8,0,0,112,8,0,0,48,8,0,0,16,0,0,0,152,8,0,0,48,8,0,0,16,0,0,0,16,0,0,0,8,0,0,0,16,0,0,0,152,8,0,0,8,0,0,0,16,0,0,0,16,0,0,0,8,0,0,0,16,0,0,0,152,8,0,0,32,0,0,0,112,8,0,0,112,8,0,0,48,8,0,0,16,0,0,0,112,8,0,0,112,8,0,0,152,8,0,0,56,0,0,0,112,8,0,0,112,8,0,0,48,8,0,0,56,0,0,0,112,8,0,0,112,8,0,0,152,8,0,0,96,0,0,0,112,8,0,0,112,8,0,0,96,0,0,0,56,0,0,0,88,0,0,0,112,8,0,0,112,8,0,0,88,0,0,0,8,0,0,0,88,0,0,0,112,0,0,0,112,8,0,0,112,0,0,0,152,8,0,0,112,0,0,0,88,0,0,0,112,0,0,0,112,8,0,0,112,8,0,0,112,8,0,0,112,8,0,0,8,0,0,0,112,0,0,0,136,0,0,0,96,0,0,0,160,0,0,0,96,0,0,0,184,0,0,0,96,0,0,0,48,8,0,0,96,0,0,0,152,8,0,0,48,8,0,0,96,0,0,0,96,0,0,0,88,0,0,0,96,0,0,0,152,8,0,0,0,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,13,0,0,0,21,0,0,0,2,0,0,0,29,0,0,0,11,0,0,0,14,0,0,0,16,0,0,0,18,0,0,0,22,0,0,0,25,0,0,0,3,0,0,0,30,0,0,0,8,0,0,0,12,0,0,0,20,0,0,0,28,0,0,0,15,0,0,0,17,0,0,0,24,0,0,0,7,0,0,0,19,0,0,0,27,0,0,0,23,0,0,0,6,0,0,0,26,0,0,0,5,0,0,0,4,0,0,0,31,0,0,0,88,0,0,0,96,0,0,0,96,0,0,0,8,0,0,0,96,0,0,0,16,0,0,0,136,0,0,0,88,0,0,0,8,0,0,0,136,0,0,0,16,0,0,0,160,0,0,0,88,0,0,0,56,0,0,0,0,0,0,0,16,1,0,0,1,0,0,0,2,0,0,0,200,255,255,255,200,255,255,255,16,1,0,0,3,0,0,0,4,0,0,0,244,10,0,0,244,0,0,0,8,1,0,0,8,11,0,0,0,0,0,0,32,1,0,0,9,0,0,0,10,0,0,0,1,0,0,0,1,0,0,0,1,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,1,0,0,0,3,0,0,0,2,0,0,0,8,0,0,0,160,0,0,0,16,0,0,0,184,0,0,0,88,0,0,0,8,0,0,0,184,0,0,0,16,0,0,0,72,1,0,0,152,8,0,0,152,8,0,0,152,8,0,0,64,1,0,0,112,1,0,0,112,8,0,0,112,8,0,0,112,1,0,0,104,1,0,0,104,1,0,0,112,8,0,0,112,8,0,0,104,1,0,0,112,8,0,0,112,8,0,0,64,1,0,0,104,1,0,0,128,1,0,0,112,8,0,0,128,1,0,0,152,8,0,0,128,1,0,0,112,8,0,0,152,8,0,0,128,1,0,0,64,1,0,0,128,1,0,0,104,1,0,0,128,1,0,0,112,8,0,0,112,8,0,0,112,8,0,0,112,8,0,0,48,8,0,0,112,1,0,0,64,1,0,0,48,8,0,0,112,1,0,0,112,1,0,0,104,1,0,0,112,1,0,0,64,1,0,0,104,1,0,0,112,1,0,0,112,1,0,0,104,1,0,0,112,1,0,0,64,1,0,0,128,1,0,0,112,8,0,0,112,8,0,0,48,8,0,0,112,1,0,0,112,8,0,0,112,8,0,0,64,1,0,0,152,1,0,0,112,8,0,0,112,8,0,0,48,8,0,0,152,1,0,0,112,8,0,0,112,8,0,0,64,1,0,0,192,1,0,0,112,8,0,0,112,8,0,0,192,1,0,0,152,1,0,0,184,1,0,0,112,8,0,0,112,8,0,0,184,1,0,0,104,1,0,0,184,1,0,0,208,1,0,0,112,8,0,0,208,1,0,0,152,8,0,0,208,1,0,0,184,1,0,0,208,1,0,0,112,8,0,0,112,8,0,0,112,8,0,0,112,8,0,0,104,1,0,0,208,1,0,0,232,1,0,0,192,1,0,0,0,2,0,0,192,1,0,0,24,2,0,0,192,1,0,0,48,8,0,0,192,1,0,0,64,1,0,0,48,8,0,0,192,1,0,0,192,1,0,0,184,1,0,0,192,1,0,0,64,1,0,0,184,1,0,0,192,1,0,0,192,1,0,0,104,1,0,0,192,1,0,0,112,1,0,0,232,1,0,0,184,1,0,0,104,1,0,0,232,1,0,0,112,1,0,0,0,2,0,0,184,1,0,0,104,1,0,0,0,2,0,0,112,1,0,0,24,2,0,0,184,1,0,0,104,1,0,0,24,2,0,0,112,1,0,0,144,13,0,0,20,0,0,0,67,46,85,84,70,45,56,0,0,0,0,0,0,0,0,0,0,0,0,0,222,18,4,149,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,116,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,140,14,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,252,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,4,135,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,42,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,95,112,137,0,255,9,47,15,0,0,0,0,32,3,0,0,11,0,0,0,12,0,0,0,0,0,0,0,40,3,0,0,13,0,0,0,14,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,48,3,0,0,5,0,0,0,6,0,0,0,252,255,255,255,252,255,255,255,48,3,0,0,7,0,0,0,8,0,0,0,136,29,0,0,156,29,0,0,0,0,0,0,72,3,0,0,15,0,0,0,16,0,0,0,17,0,0,0,1,0,0,0,3,0,0,0,8,0,0,0,0,0,0,0,104,3,0,0,18,0,0,0,19,0,0,0,17,0,0,0,2,0,0,0,4,0,0,0,9,0,0,0,0,0,0,0,120,3,0,0,20,0,0,0,21,0,0,0,17,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,184,3,0,0,22,0,0,0,23,0,0,0,17,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,240,3,0,0,24,0,0,0,25,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,23,0,0,0,5,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,48,4,0,0,26,0,0,0,27,0,0,0,17,0,0,0,7,0,0,0,8,0,0,0,25,0,0,0,9,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,10,0,0,0,0,0,0,0,104,4,0,0,28,0,0,0,29,0,0,0,17,0,0,0,7,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,104,4,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,160,4,0,0,30,0,0,0,31,0,0,0,17,0,0,0,15,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,160,4,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,208,4,0,0,32,0,0,0,33,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,248,4,0,0,34,0,0,0,35,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,24,5,0,0,36,0,0,0,37,0,0,0,17,0,0,0,23,0,0,0,24,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,25,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,64,5,0,0,38,0,0,0,39,0,0,0,17,0,0,0,26,0,0,0,27,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,28,0,0,0,12,0,0,0,13,0,0,0,0,0,0,0,96,5,0,0,40,0,0,0,41,0,0,0,17,0,0,0,29,0,0,0,30,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,31,0,0,0,18,0,0,0,19,0,0,0,0,0,0,0,128,5,0,0,42,0,0,0,43,0,0,0,17,0,0,0,32,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,34,0,0,0,24,0,0,0,25,0,0,0,0,0,0,0,160,5,0,0,44,0,0,0,45,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,200,5,0,0,46,0,0,0,47,0,0,0,17,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,240,5,0,0,48,0,0,0,49,0,0,0,17,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,24,6,0,0,50,0,0,0,51,0,0,0,17,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,64,6,0,0,52,0,0,0,53,0,0,0,17,0,0,0,10,0,0,0,3,0,0,0,26,0,0,0,0,0,0,0,104,6,0,0,54,0,0,0,55,0,0,0,17,0,0,0,11,0,0,0,4,0,0,0,27,0,0,0,0,0,0,0,192,6,0,0,56,0,0,0,57,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,35,0,0,0,36,0,0,0,12,0,0,0,37,0,0,0,0,0,0,0,136,6,0,0,56,0,0,0,58,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,35,0,0,0,36,0,0,0,12,0,0,0,37,0,0,0,0,0,0,0,240,6,0,0,59,0,0,0,60,0,0,0,17,0,0,0,5,0,0,0,6,0,0,0,13,0,0,0,38,0,0,0,39,0,0,0,14,0,0,0,40,0,0,0,0,0,0,0,48,7,0,0,61,0,0,0,62,0,0,0,17,0,0,0,0,0,0,0,64,7,0,0,63,0,0,0,64,0,0,0,17,0,0,0,5,0,0,0,12,0,0,0,6,0,0,0,13,0,0,0,7,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,136,7,0,0,65,0,0,0,66,0,0,0,17,0,0,0,41,0,0,0,42,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,152,7,0,0,67,0,0,0,68,0,0,0,17,0,0,0,43,0,0,0,44,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,88,3,0,0,56,0,0,0,69,0,0,0,17,0,0,0,0,0,0,0,104,7,0,0,56,0,0,0,70,0,0,0,17,0,0,0,15,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,17,0,0,0,10,0,0,0,5,0,0,0,18,0,0,0,16,0,0,0,0,0,0,0,208,6,0,0,56,0,0,0,71,0,0,0,17,0,0,0,7,0,0,0,8,0,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([45,0,0,0,46,0,0,0,18,0,0,0,47,0,0,0,0,0,0,0,16,7,0,0,56,0,0,0,72,0,0,0,17,0,0,0,9,0,0,0,10,0,0,0,19,0,0,0,48,0,0,0,49,0,0,0,20,0,0,0,50,0,0,0,0,0,0,0,152,6,0,0,56,0,0,0,73,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,35,0,0,0,36,0,0,0,12,0,0,0,37,0,0,0,0,0,0,0,152,4,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,200,4,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,1,0,0,0,161,112,0,0,0,0,0,0,184,7,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,19,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,224,7,0,0,74,0,0,0,78,0,0,0,76,0,0,0,77,0,0,0,19,0,0,0,6,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,240,7,0,0,79,0,0,0,80,0,0,0,51,0,0,0,0,0,0,0,32,8,0,0,74,0,0,0,81,0,0,0,76,0,0,0,77,0,0,0,20,0,0,0,0,0,0,0,16,8,0,0,74,0,0,0,82,0,0,0,76,0,0,0,77,0,0,0,21,0,0,0,0,0,0,0,160,8,0,0,74,0,0,0,83,0,0,0,76,0,0,0,77,0,0,0,19,0,0,0,7,0,0,0,3,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,32,2,32,2,32,2,32,2,32,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,96,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,213,8,213,8,213,8,213,8,213,8,213,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,4,192,4,192,4,192,4,192,4,192,4,192,8,214,8,214,8,214,8,214,8,214,8,214,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,4,192,4,192,4,192,4,192,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,68,101,110,115,101,77,97,116,114,105,120,0,105,100,101,110,116,105,116,121,0,111,110,101,115,0,99,111,110,115,116,97,110,116,0,114,97,110,100,111,109,0,116,114,97,110,115,112,111,115,101,0,110,82,111,119,115,0,110,67,111,108,115,0,110,111,114,109,0,114,97,110,107,0,115,117,109,0,115,117,98,77,97,116,114,105,120,0,115,99,97,108,101,66,121,0,105,110,99,114,101,109,101,110,116,66,121,0,100,101,99,114,101,109,101,110,116,66,121,0,116,105,109,101,115,82,101,97,108,0,116,105,109,101,115,68,101,110,115,101,0,112,108,117,115,0,109,105,110,117,115,0,110,101,103,97,116,101,100,0,103,101,116,0,115,101,116,0,104,99,97,116,0,118,99,97,116,0,84,114,105,112,108,101,116,0,97,100,100,69,110,116,114,121,0,83,112,97,114,115,101,77,97,116,114,105,120,0,100,105,97,103,0,110,110,122,0,102,114,111,98,101,110,105,117,115,78,111,114,109,0,116,111,68,101,110,115,101,0,99,104,111,108,0,108,117,0,113,114,0,116,105,109,101,115,83,112,97,114,115,101,0,67,104,111,108,101,115,107,121,0,115,111,108,118,101,80,111,115,105,116,105,118,101,68,101,102,105,110,105,116,101,0,76,85,0,115,111,108,118,101,83,113,117,97,114,101,0,81,82,0,115,111,108,118,101,0,67,111,109,112,108,101,120,0,114,101,97,108,0,105,109,97,103,0,67,111,109,112,108,101,120,68,101,110,115,101,77,97,116,114,105,120,0,99,111,110,106,117,103,97,116,101,0,116,105,109,101,115,67,111,109,112,108,101,120,0,67,111,109,112,108,101,120,84,114,105,112,108,101,116,0,67,111,109,112,108,101,120,83,112,97,114,115,101,77,97,116,114,105,120,0,67,111,109,112,108,101,120,67,104,111,108,101,115,107,121,0,67,111,109,112,108,101,120,76,85,0,67,111,109,112,108,101,120,81,82,0,49,49,68,101,110,115,101,77,97,116,114,105,120,73,100,69,0,80,49,49,68,101,110,115,101,77,97,116,114,105,120,73,100,69,0,80,75,49,49,68,101,110,115,101,77,97,116,114,105,120,73,100,69,0,105,105,0,118,0,118,105,0,105,105,105,105,0,114,111,119,115,32,62,61,32,48,32,38,38,32,40,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,68,121,110,97,109,105,99,32,124,124,32,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,114,111,119,115,41,32,38,38,32,99,111,108,115,32,62,61,32,48,32,38,38,32,40,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,68,121,110,97,109,105,99,32,124,124,32,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,99,111,108,115,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,67,119,105,115,101,78,117,108,108,97,114,121,79,112,46,104,0,67,119,105,115,101,78,117,108,108,97,114,121,79,112,0,100,115,116,46,114,111,119,115,40,41,32,61,61,32,100,115,116,82,111,119,115,32,38,38,32,100,115,116,46,99,111,108,115,40,41,32,61,61,32,100,115,116,67,111,108,115,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,65,115,115,105,103,110,69,118,97,108,117,97,116,111,114,46,104,0,114,101,115,105,122,101,95,105,102,95,97,108,108,111,119,101,100,0,40,33,40,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,33,61,68,121,110,97,109,105,99,41,32,124,124,32,40,114,111,119,115,61,61,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,41,32,38,38,32,40,33,40,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,33,61,68,121,110,97,109,105,99,41,32,124,124,32,40,99,111,108,115,61,61,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,41,32,38,38,32,40,33,40,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,61,61,68,121,110,97,109,105,99,32,38,38,32,77,97,120,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,33,61,68,121,110,97,109,105,99,41,32,124,124,32,40,114,111,119,115,60,61,77,97,120,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,41,32,38,38,32,40,33,40,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,61,61,68,121,110,97,109,105,99,32,38,38,32,77,97,120,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,33,61,68,121,110,97,109,105,99,41,32,124,124,32,40,99,111,108,115,60,61,77,97,120,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,41,32,38,38,32,114,111,119,115,62,61,48,32,38,38,32,99,111,108,115,62,61,48,32,38,38,32,34,73,110,118,97,108,105,100,32,115,105,122,101,115,32,119,104,101,110,32,114,101,115,105,122,105,110,103,32,97,32,109,97,116,114,105,120,32,111,114,32,97,114,114,97,121,46,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,80,108,97,105,110,79,98,106,101,99,116,66,97,115,101,46,104,0,114,101,115,105,122,101,0,105,105,105,0,105,105,105,105,100,0,40,33,99,104,101,99,107,95,116,114,97,110,115,112,111,115,101,95,97,108,105,97,115,105,110,103,95,114,117,110,95,116,105,109,101,95,115,101,108,101,99,116,111,114,32,60,116,121,112,101,110,97,109,101,32,68,101,114,105,118,101,100,58,58,83,99,97,108,97,114,44,98,108,97,115,95,116,114,97,105,116,115,60,68,101,114,105,118,101,100,62,58,58,73,115,84,114,97,110,115,112,111,115,101,100,44,79,116,104,101,114,68,101,114,105,118,101,100,62,32,58,58,114,117,110,40,101,120,116,114,97,99,116,95,100,97,116,97,40,100,115,116,41,44,32,111,116,104,101,114,41,41,32,38,38,32,34,97,108,105,97,115,105,110,103,32,100,101,116,101,99,116,101,100,32,100,117,114,105,110,103,32,116,114,97,110,115,112,111,115,105,116,105,111,110,44,32,117,115,101,32,116,114,97,110,115,112,111,115,101,73,110,80,108,97,99,101,40,41,32,34,32,34,111,114,32,101,118,97,108,117,97,116,101,32,116,104,101,32,114,104,115,32,105,110,116,111,32,97,32,116,101,109,112,111,114,97,114,121,32,117,115,105,110,103,32,46,101,118,97,108,40,41,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,84,114,97,110,115,112,111,115,101,46,104,0,114,117,110,0,116,104,105,115,45,62,114,111,119,115,40,41,62,48,32,38,38,32,116,104,105,115,45,62,99,111,108,115,40,41,62,48,32,38,38,32,34,121,111,117,32,97,114,101,32,117,115,105,110,103,32,97,110,32,101,109,112,116,121,32,109,97,116,114,105,120,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,82,101,100,117,120,46,104,0,114,101,100,117,120,0,109,97,116,46,114,111,119,115,40,41,62,48,32,38,38,32,109,97,116,46,99,111,108,115,40,41,62,48,32,38,38,32,34,121,111,117,32,97,114,101,32,117,115,105,110,103,32,97,110,32,101,109,112,116,121,32,109,97,116,114,105,120,34,0,100,105,105,105,0,40,40,83,105,122,101,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,68,121,110,97,109,105,99,32,38,38,32,40,77,97,120,83,105,122,101,65,116,67,111,109,112,105,108,101,84,105,109,101,61,61,68,121,110,97,109,105,99,32,124,124,32,115,105,122,101,60,61,77,97,120,83,105,122,101,65,116,67,111,109,112,105,108,101,84,105,109,101,41,41,32,124,124,32,83,105,122,101,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,115,105,122,101,41,32,38,38,32,115,105,122,101,62,61,48,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,81,82,47,67,111,108,80,105,118,72,111,117,115,101,104,111,108,100,101,114,81,82,46,104,0,40,105,62,61,48,41,32,38,38,32,40,32,40,40,66,108,111,99,107,82,111,119,115,61,61,49,41,32,38,38,32,40,66,108,111,99,107,67,111,108,115,61,61,88,112,114,84,121,112,101,58,58,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,32,38,38,32,105,60,120,112,114,46,114,111,119,115,40,41,41,32,124,124,40,40,66,108,111,99,107,82,111,119,115,61,61,88,112,114,84,121,112,101,58,58,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,41,32,38,38,32,40,66,108,111,99,107,67,111,108,115,61,61,49,41,32,38,38,32,105,60,120,112,114,46,99,111,108,115,40,41,41,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,66,108,111,99,107,46,104,0,66,108,111,99,107,0,40,100,97,116,97,80,116,114,32,61,61,32,48,41,32,124,124,32,40,32,114,111,119,115,32,62,61,32,48,32,38,38,32,40,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,68,121,110,97,109,105,99,32,124,124,32,82,111,119,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,114,111,119,115,41,32,38,38,32,99,111,108,115,32,62,61,32,48,32,38,38,32,40,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,68,121,110,97,109,105,99,32,124,124,32,67,111,108,115,65,116,67,111,109,112,105,108,101,84,105,109,101,32,61,61,32,99,111,108,115,41,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,77,97,112,66,97,115,101,46,104,0,77,97,112,66,97,115,101,0,118,32,61,61,32,84,40,86,97,108,117,101,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,117,116,105,108,47,88,112,114,72,101,108,112,101,114,46,104,0,118,97,114,105,97,98,108,101,95,105,102,95,100,121,110,97,109,105,99,0,115,116,97,114,116,82,111,119,32,62,61,32,48,32,38,38,32,98,108,111,99,107,82,111,119,115,32,62,61,32,48,32,38,38,32,115,116,97,114,116,82,111,119,32,60,61,32,120,112,114,46,114,111,119,115,40,41,32,45,32,98,108,111,99,107,82,111,119,115,32,38,38,32,115,116,97,114,116,67,111,108,32,62,61,32,48,32,38,38,32,98,108,111,99,107,67,111,108,115,32,62,61,32,48,32,38,38,32,115,116,97,114,116,67,111,108,32,60,61,32,120,112,114,46,99,111,108,115,40,41,32,45,32,98,108,111,99,107,67,111,108,115,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,68,101,110,115,101,66,97,115,101,46,104,0,100,115,116,46,114,111,119,115,40,41,32,61,61,32,115,114,99,46,114,111,119,115,40,41,32,38,38,32,100,115,116,46,99,111,108,115,40,41,32,61,61,32,115,114,99,46,99,111,108,115,40,41,0,114,111,119,115,32,61,61,32,116,104,105,115,45,62,114,111,119,115,40,41,32,38,38,32,99,111,108,115,32,61,61,32,116,104,105,115,45,62,99,111,108,115,40,41,32,38,38,32,34,68,101,110,115,101,66,97,115,101,58,58,114,101,115,105,122,101,40,41,32,100,111,101,115,32,110,111,116,32,97,99,116,117,97,108,108,121,32,97,108,108,111,119,32,116,111,32,114,101,115,105,122,101,46,34,0,97,76,104,115,46,114,111,119,115,40,41,32,61,61,32,97,82,104,115,46,114,111,119,115,40,41,32,38,38,32,97,76,104,115,46,99,111,108,115,40,41,32,61,61,32,97,82,104,115,46,99,111,108,115,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,67,119,105,115,101,66,105,110,97,114,121,79,112,46,104,0,67,119,105,115,101,66,105,110,97,114,121,79,112,0,118,101,99,83,105,122,101,32,62,61,32,48,0,108,104,115,46,99,111,108,115,40,41,32,61,61,32,114,104,115,46,114,111,119,115,40,41,32,38,38,32,34,105,110,118,97,108,105,100,32,109,97,116,114,105,120,32,112,114,111,100,117,99,116,34,32,38,38,32,34,105,102,32,121,111,117,32,119,97,110,116,101,100,32,97,32,99,111,101,102,102,45,119,105,115,101,32,111,114,32,97,32,100,111,116,32,112,114,111,100,117,99,116,32,117,115,101,32,116,104,101,32,114,101,115,112,101,99,116,105,118,101,32,101,120,112,108,105,99,105,116,32,102,117,110,99,116,105,111,110,115,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,80,114,111,100,117,99,116,46,104,0,80,114,111,100,117,99,116,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,80,114,111,100,117,99,116,69,118,97,108,117,97,116,111,114,115,46,104,0,105,62,61,48,32,38,38,32,106,62,61,48,32,38,38,32,105,60,115,105,122,101,40,41,32,38,38,32,106,60,115,105,122,101,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,80,101,114,109,117,116,97,116,105,111,110,77,97,116,114,105,120,46,104,0,97,112,112,108,121,84,114,97,110,115,112,111,115,105,116,105,111,110,79,110,84,104,101,82,105,103,104,116,0,109,95,105,115,73,110,105,116,105,97,108,105,122,101,100,32,38,38,32,34,67,111,108,80,105,118,72,111,117,115,101,104,111,108,100,101,114,81,82,32,105,115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,46,34,0,109,95,105,115,73,110,105,116,105,97,108,105,122,101,100,32,124,124,32,109,95,117,115,101,80,114,101,115,99,114,105,98,101,100,84,104,114,101,115,104,111,108,100,0,116,104,114,101,115,104,111,108,100,0,100,105,105,0,105,105,105,105,105,105,105,0,118,105,105,100,0,118,105,105,105,0,105,105,105,100,0,100,115,116,46,114,111,119,115,40,41,61,61,97,95,108,104,115,46,114,111,119,115,40,41,32,38,38,32,100,115,116,46,99,111,108,115,40,41,61,61,97,95,114,104,115,46,99,111,108,115,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,112,114,111,100,117,99,116,115,47,71,101,110,101,114,97,108,77,97,116,114,105,120,77,97,116,114,105,120,46,104,0,115,99,97,108,101,65,110,100,65,100,100,84,111,0,40,40,33,80,97,110,101,108,77,111,100,101,41,32,38,38,32,115,116,114,105,100,101,61,61,48,32,38,38,32,111,102,102,115,101,116,61,61,48,41,32,124,124,32,40,80,97,110,101,108,77,111,100,101,32,38,38,32,115,116,114,105,100,101,62,61,100,101,112,116,104,32,38,38,32,111,102,102,115,101,116,60,61,115,116,114,105,100,101,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,112,114,111,100,117,99,116,115,47,71,101,110,101,114,97,108,66,108,111,99,107,80,97,110,101,108,75,101,114,110,101,108,46,104,0,114,111,119,32,62,61,32,48,32,38,38,32,114,111,119,32,60,32,114,111,119,115,40,41,32,38,38,32,99,111,108,32,62,61,32,48,32,38,38,32,99,111,108,32,60,32,99,111,108,115,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,68,101,110,115,101,67,111,101,102,102,115,66,97,115,101,46,104,0,100,105,105,105,105,0,118,105,105,105,105,100,0,55,84,114,105,112,108,101,116,73,100,69,0,80,55,84,114,105,112,108,101,116,73,100,69,0,80,75,55,84,114,105,112,108,101,116,73,100,69,0,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,100,69,0,80,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,100,69,0,80,75,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,100,69,0,105,115,67,111,109,112,114,101,115,115,101,100,40,41,32,38,38,32,34,84,104,105,115,32,102,117,110,99,116,105,111,110,32,100,111,101,115,32,110,111,116,32,109,97,107,101,32,115,101,110,115,101,32,105,110,32,110,111,110,32,99,111,109,112,114,101,115,115,101,100,32,109,111,100,101,46,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,83,112,97,114,115,101,77,97,116,114,105,120,46,104,0,114,101,115,101,114,118,101,0,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,93,61,61,73,110,100,101,120,40,109,95,100,97,116,97,46,115,105,122,101,40,41,41,32,38,38,32,34,89,111,117,32,109,117,115,116,32,99,97,108,108,32,115,116,97,114,116,86,101,99,32,102,111,114,32,101,97,99,104,32,105,110,110,101,114,32,118,101,99,116,111,114,32,115,101,113,117,101,110,116,105,97,108,108,121,34,0,115,116,97,114,116,86,101,99,0,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,43,49,93,61,61,48,32,38,38,32,34,89,111,117,32,109,117,115,116,32,99,97,108,108,32,115,116,97,114,116,86,101,99,32,102,111,114,32,101,97,99,104,32,105,110,110,101,114,32,118,101,99,116,111,114,32,115,101,113,117,101,110,116,105,97,108,108,121,34,0,73,110,100,101,120,40,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,43,49,93,41,32,61,61,32,109,95,100,97,116,97,46,115,105,122,101,40,41,32,38,38,32,34,73,110,118,97,108,105,100,32,111,114,100,101,114,101,100,32,105,110,115,101,114,116,105,111,110,32,40,105,110,118,97,108,105,100,32,111,117,116,101,114,32,105,110,100,101,120,41,34,0,105,110,115,101,114,116,66,97,99,107,66,121,79,117,116,101,114,73,110,110,101,114,0,40,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,43,49,93,45,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,93,61,61,48,32,124,124,32,109,95,100,97,116,97,46,105,110,100,101,120,40,109,95,100,97,116,97,46,115,105,122,101,40,41,45,49,41,60,105,110,110,101,114,41,32,38,38,32,34,73,110,118,97,108,105,100,32,111,114,100,101,114,101,100,32,105,110,115,101,114,116,105,111,110,32,40,105,110,118,97,108,105,100,32,105,110,110,101,114,32,105,110,100,101,120,41,34,0,105,116,45,62,114,111,119,40,41,62,61,48,32,38,38,32,105,116,45,62,114,111,119,40,41,60,109,97,116,46,114,111,119,115,40,41,32,38,38,32,105,116,45,62,99,111,108,40,41,62,61,48,32,38,38,32,105,116,45,62,99,111,108,40,41,60,109,97,116,46,99,111,108,115,40,41,0,115,101,116,95,102,114,111,109,95,116,114,105,112,108,101,116,115,0,105,110,100,101,120,32,62,61,32,48,32,38,38,32,105,110,100,101,120,32,60,32,115,105,122,101,40,41,0,33,105,115,67,111,109,112,114,101,115,115,101,100,40,41,0,105,110,115,101,114,116,66,97,99,107,85,110,99,111,109,112,114,101,115,115,101,100,0,109,95,105,110,110,101,114,78,111,110,90,101,114,111,115,91,111,117,116,101,114,93,60,61,40,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,43,49,93,32,45,32,109,95,111,117,116,101,114,73,110,100,101,120,91,111,117,116,101,114,93,41,0,99,111,108,108,97,112,115,101,68,117,112,108,105,99,97,116,101,115,0,114,111,119,115,40,41,32,61,61,32,99,111,108,115,40,41,32,38,38,32,34,79,78,76,89,32,70,79,82,32,83,81,85,65,82,69,68,32,77,65,84,82,73,67,69,83,34,0,115,101,116,73,100,101,110,116,105,116,121,0,114,111,119,115,40,41,62,48,32,38,38,32,99,111,108,115,40,41,62,48,32,38,38,32,34,121,111,117,32,97,114,101,32,117,115,105,110,103,32,97,32,110,111,110,32,105,110,105,116,105,97,108,105,122,101,100,32,109,97,116,114,105,120,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,83,112,97,114,115,101,82,101,100,117,120,46,104,0,80,56,67,104,111,108,101,115,107,121,73,100,69,0,56,67,104,111,108,101,115,107,121,73,100,69,0,80,50,76,85,73,100,69,0,50,76,85,73,100,69,0,80,50,81,82,73,100,69,0,50,81,82,73,100,69,0,108,104,115,46,111,117,116,101,114,83,105,122,101,40,41,32,61,61,32,114,104,115,46,105,110,110,101,114,83,105,122,101,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,67,111,110,115,101,114,118,97,116,105,118,101,83,112,97,114,115,101,83,112,97,114,115,101,80,114,111,100,117,99,116,46,104,0,99,111,110,115,101,114,118,97,116,105,118,101,95,115,112,97,114,115,101,95,115,112,97,114,115,101,95,112,114,111,100,117,99,116,95,105,109,112,108,0,120,62,61,48,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,77,97,116,104,70,117,110,99,116,105,111,110,115,46,104,0,108,111,103,50,0,80,75,56,67,104,111,108,101,115,107,121,73,100,69,0,97,46,114,111,119,115,40,41,61,61,97,46,99,111,108,115,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,104,111,108,101,115,107,121,47,83,105,109,112,108,105,99,105,97,108,67,104,111,108,101,115,107,121,46,104,0,97,110,97,108,121,122,101,80,97,116,116,101,114,110,0,111,114,100,101,114,105,110,103,0,114,111,119,115,40,41,61,61,99,111,108,115,40,41,32,38,38,32,34,83,101,108,102,65,100,106,111,105,110,116,86,105,101,119,32,105,115,32,111,110,108,121,32,102,111,114,32,115,113,117,97,114,101,100,32,109,97,116,114,105,99,101,115,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,83,112,97,114,115,101,83,101,108,102,65,100,106,111,105,110,116,86,105,101,119,46,104,0,83,112,97,114,115,101,83,101,108,102,65,100,106,111,105,110,116,86,105,101,119,0,109,95,105,115,73,110,105,116,105,97,108,105,122,101,100,32,38,38,32,34,68,101,99,111,109,112,111,115,105,116,105,111,110,32,105,115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,46,34,0,105,110,102,111,0,102,97,99,116,111,114,105,122,101,0,109,95,97,110,97,108,121,115,105,115,73,115,79,107,32,38,38,32,34,89,111,117,32,109,117,115,116,32,102,105,114,115,116,32,99,97,108,108,32,97,110,97,108,121,122,101,80,97,116,116,101,114,110,40,41,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,104,111,108,101,115,107,121,47,83,105,109,112,108,105,99,105,97,108,67,104,111,108,101,115,107,121,95,105,109,112,108,46,104,0,102,97,99,116,111,114,105,122,101,95,112,114,101,111,114,100,101,114,101,100,0,97,112,46,114,111,119,115,40,41,61,61,97,112,46,99,111,108,115,40,41,0,109,95,112,97,114,101,110,116,46,115,105,122,101,40,41,61,61,97,112,46,114,111,119,115,40,41,0,109,95,110,111,110,90,101,114,111,115,80,101,114,67,111,108,46,115,105,122,101,40,41,61,61,97,112,46,114,111,119,115,40,41,0,109,95,105,115,73,110,105,116,105,97,108,105,122,101,100,32,38,38,32,34,83,111,108,118,101,114,32,105,115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,100,46,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,83,112,97,114,115,101,83,111,108,118,101,114,66,97,115,101,46,104,0,100,101,114,105,118,101,100,40,41,46,114,111,119,115,40,41,61,61,98,46,114,111,119,115,40,41,32,38,38,32,34,115,111,108,118,101,40,41,58,32,105,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,111,102,32,116,104,101,32,114,105,103,104,116,32,104,97,110,100,32,115,105,100,101,32,109,97,116,114,105,120,32,98,34,0,66,97,115,101,58,58,109,95,102,97,99,116,111,114,105,122,97,116,105,111,110,73,115,79,107,32,38,38,32,34,84,104,101,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,105,115,32,110,111,116,32,105,110,32,97,32,118,97,108,105,100,32,115,116,97,116,101,32,102,111,114,32,115,111,108,118,105,110,103,44,32,121,111,117,32,109,117,115,116,32,102,105,114,115,116,32,99,97,108,108,32,101,105,116,104,101,114,32,99,111,109,112,117,116,101,40,41,32,111,114,32,115,121,109,98,111,108,105,99,40,41,47,110,117,109,101,114,105,99,40,41,34,0,95,115,111,108,118,101,95,105,109,112,108,0,66,97,115,101,58,58,109,95,109,97,116,114,105,120,46,114,111,119,115,40,41,61,61,98,46,114,111,119,115,40,41,0,100,101,114,105,118,101,100,40,41,46,99,111,108,115,40,41,32,61,61,32,100,101,114,105,118,101,100,40,41,46,114,111,119,115,40,41,32,38,38,32,100,101,114,105,118,101,100,40,41,46,99,111,108,115,40,41,32,61,61,32,111,116,104,101,114,46,114,111,119,115,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,84,114,105,97,110,103,117,108,97,114,83,111,108,118,101,114,46,104,0,115,111,108,118,101,73,110,80,108,97,99,101,0,105,116,32,38,38,32,105,116,46,105,110,100,101,120,40,41,61,61,105,0,80,75,50,76,85,73,100,69,0,109,97,116,46,105,115,67,111,109,112,114,101,115,115,101,100,40,41,32,38,38,32,34,67,79,76,65,77,68,79,114,100,101,114,105,110,103,32,114,101,113,117,105,114,101,115,32,97,32,115,112,97,114,115,101,32,109,97,116,114,105,120,32,105,110,32,99,111,109,112,114,101,115,115,101,100,32,109,111,100,101,46,32,67,97,108,108,32,46,109,97,107,101,67,111,109,112,114,101,115,115,101,100,40,41,32,98,101,102,111,114,101,32,112,97,115,115,105,110,103,32,105,116,32,116,111,32,67,79,76,65,77,68,79,114,100,101,114,105,110,103,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,79,114,100,101,114,105,110,103,77,101,116,104,111,100,115,47,79,114,100,101,114,105,110,103,46,104,0,105,110,102,111,32,38,38,32,34,67,79,76,65,77,68,32,102,97,105,108,101,100,32,34,0,108,104,115,46,99,111,108,115,40,41,32,61,61,32,114,104,115,46,114,111,119,115,40,41,0,97,115,115,105,103,110,80,114,111,100,117,99,116,0,109,95,97,110,97,108,121,115,105,115,73,115,79,107,32,38,38,32,34,97,110,97,108,121,122,101,80,97,116,116,101,114,110,40,41,32,115,104,111,117,108,100,32,98,101,32,99,97,108,108,101,100,32,102,105,114,115,116,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,76,85,47,83,112,97,114,115,101,76,85,46,104,0,40,109,97,116,114,105,120,46,114,111,119,115,40,41,32,61,61,32,109,97,116,114,105,120,46,99,111,108,115,40,41,41,32,38,38,32,34,79,110,108,121,32,102,111,114,32,115,113,117,97,114,101,100,32,109,97,116,114,105,99,101,115,34,0,85,78,65,66,76,69,32,84,79,32,65,76,76,79,67,65,84,69,32,87,79,82,75,73,78,71,32,77,69,77,79,82,89,10,10,0,85,78,65,66,76,69,32,84,79,32,69,88,80,65,78,68,32,77,69,77,79,82,89,32,73,78,32,67,79,76,85,77,78,95,68,70,83,40,41,32,0,85,78,65,66,76,69,32,84,79,32,69,88,80,65,78,68,32,77,69,77,79,82,89,32,73,78,32,67,79,76,85,77,78,95,66,77,79,68,40,41,32,0,85,78,65,66,76,69,32,84,79,32,69,88,80,65,78,68,32,77,69,77,79,82,89,32,73,78,32,67,79,80,89,95,84,79,95,85,67,79,76,40,41,32,0,84,72,69,32,77,65,84,82,73,88,32,73,83,32,83,84,82,85,67,84,85,82,65,76,76,89,32,83,73,78,71,85,76,65,82,32,46,46,46,32,90,69,82,79,32,67,79,76,85,77,78,32,65,84,32,0,105,110,110,101,114,83,116,114,105,100,101,62,61,48,32,38,38,32,111,117,116,101,114,83,116,114,105,100,101,62,61,48,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,83,116,114,105,100,101,46,104,0,83,116,114,105,100,101,0,116,101,109,112,118,46,115,105,122,101,40,41,62,119,42,108,100,117,32,43,32,110,114,111,119,42,119,32,43,32,49,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,76,85,47,83,112,97,114,115,101,76,85,95,112,97,110,101,108,95,98,109,111,100,46,104,0,112,97,110,101,108,95,98,109,111,100,0,40,32,40,40,105,110,116,101,114,110,97,108,58,58,85,73,110,116,80,116,114,40,109,95,100,97,116,97,41,32,37,32,105,110,116,101,114,110,97,108,58,58,116,114,97,105,116,115,60,68,101,114,105,118,101,100,62,58,58,65,108,105,103,110,109,101,110,116,41,32,61,61,32,48,41,32,124,124,32,40,99,111,108,115,40,41,32,42,32,114,111,119,115,40,41,32,42,32,105,110,110,101,114,83,116,114,105,100,101,40,41,32,42,32,115,105,122,101,111,102,40,83,99,97,108,97,114,41,41,32,60,32,105,110,116,101,114,110,97,108,58,58,116,114,97,105,116,115,60,68,101,114,105,118,101,100,62,58,58,65,108,105,103,110,109,101,110,116,32,41,32,38,38,32,34,100,97,116,97,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,34,0,99,104,101,99,107,83,97,110,105,116,121,0,100,101,114,105,118,101,100,40,41,46,99,111,108,115,40,41,32,61,61,32,100,101,114,105,118,101,100,40,41,46,114,111,119,115,40,41,32,38,38,32,40,40,83,105,100,101,61,61,79,110,84,104,101,76,101,102,116,32,38,38,32,100,101,114,105,118,101,100,40,41,46,99,111,108,115,40,41,32,61,61,32,111,116,104,101,114,46,114,111,119,115,40,41,41,32,124,124,32,40,83,105,100,101,61,61,79,110,84,104,101,82,105,103,104,116,32,38,38,32,100,101,114,105,118,101,100,40,41,46,99,111,108,115,40,41,32,61,61,32,111,116,104,101,114,46,99,111,108,115,40,41,41,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,67,111,114,101,47,83,111,108,118,101,84,114,105,97,110,103,117,108,97,114,46,104,0,78,83,116,51,95,95,50,49,57,98,97,115,105,99,95,111,115,116,114,105,110,103,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,50,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,109,95,102,97,99,116,111,114,105,122,97,116,105,111,110,73,115,79,107,32,38,38,32,34,84,104,101,32,109,97,116,114,105,120,32,115,104,111,117,108,100,32,98,101,32,102,97,99,116,111,114,105,122,101,100,32,102,105,114,115,116,34,0,80,75,50,81,82,73,100,69,0,109,97,116,46,105,115,67,111,109,112,114,101,115,115,101,100,40,41,32,38,38,32,34,83,112,97,114,115,101,81,82,32,114,101,113,117,105,114,101,115,32,97,32,115,112,97,114,115,101,32,109,97,116,114,105,120,32,105,110,32,99,111,109,112,114,101,115,115,101,100,32,109,111,100,101,46,32,67,97,108,108,32,46,109,97,107,101,67,111,109,112,114,101,115,115,101,100,40,41,32,98,101,102,111,114,101,32,112,97,115,115,105,110,103,32,105,116,32,116,111,32,83,112,97,114,115,101,81,82,34,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,81,82,47,83,112,97,114,115,101,81,82,46,104,0,109,95,97,110,97,108,121,115,105,115,73,115,111,107,32,38,38,32,34,97,110,97,108,121,122,101,80,97,116,116,101,114,110,40,41,32,115,104,111,117,108,100,32,98,101,32,99,97,108,108,101,100,32,98,101,102,111,114,101,32,116,104,105,115,32,115,116,101,112,34,0,69,109,112,116,121,32,114,111,119,32,102,111,117,110,100,32,100,117,114,105,110,103,32,110,117,109,101,114,105,99,97,108,32,102,97,99,116,111,114,105,122,97,116,105,111,110,0,115,105,122,101,40,41,32,61,61,32,111,116,104,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([114,46,115,105,122,101,40,41,0,47,117,115,114,47,108,111,99,97,108,47,67,101,108,108,97,114,47,101,105,103,101,110,47,51,46,51,46,52,47,105,110,99,108,117,100,101,47,101,105,103,101,110,51,47,69,105,103,101,110,47,115,114,99,47,83,112,97,114,115,101,67,111,114,101,47,83,112,97,114,115,101,68,111,116,46,104,0,100,111,116,0,111,116,104,101,114,46,115,105,122,101,40,41,62,48,32,38,38,32,34,121,111,117,32,97,114,101,32,117,115,105,110,103,32,97,32,110,111,110,32,105,110,105,116,105,97,108,105,122,101,100,32,118,101,99,116,111,114,34,0,114,111,119,62,61,48,32,38,38,32,114,111,119,60,114,111,119,115,40,41,32,38,38,32,99,111,108,62,61,48,32,38,38,32,99,111,108,60,99,111,108,115,40,41,0,105,110,115,101,114,116,0,105,110,115,101,114,116,85,110,99,111,109,112,114,101,115,115,101,100,0,40,112,60,61,115,116,97,114,116,73,100,32,124,124,32,109,95,100,97,116,97,46,105,110,100,101,120,40,112,45,49,41,33,61,105,110,110,101,114,41,32,38,38,32,34,121,111,117,32,99,97,110,110,111,116,32,105,110,115,101,114,116,32,97,110,32,101,108,101,109,101,110,116,32,116,104,97,116,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,44,32,121,111,117,32,109,117,115,116,32,99,97,108,108,32,99,111,101,102,102,82,101,102,32,116,111,32,116,104,105,115,32,101,110,100,34,0,109,95,105,115,73,110,105,116,105,97,108,105,122,101,100,32,38,38,32,34,84,104,101,32,102,97,99,116,111,114,105,122,97,116,105,111,110,32,115,104,111,117,108,100,32,98,101,32,99,97,108,108,101,100,32,102,105,114,115,116,44,32,117,115,101,32,99,111,109,112,117,116,101,40,41,34,0,116,104,105,115,45,62,114,111,119,115,40,41,32,61,61,32,66,46,114,111,119,115,40,41,32,38,38,32,34,83,112,97,114,115,101,81,82,58,58,115,111,108,118,101,40,41,32,58,32,105,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,105,110,32,116,104,101,32,114,105,103,104,116,32,104,97,110,100,32,115,105,100,101,32,109,97,116,114,105,120,34,0,109,95,113,114,46,109,95,81,46,114,111,119,115,40,41,32,61,61,32,109,95,111,116,104,101,114,46,114,111,119,115,40,41,32,38,38,32,34,78,111,110,32,99,111,110,102,111,114,109,105,110,103,32,111,98,106,101,99,116,32,115,105,122,101,115,34,0,101,118,97,108,84,111,0,99,111,108,115,80,101,114,109,117,116,97,116,105,111,110,0,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,0,80,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,0,80,75,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,0,105,105,100,100,0,49,49,68,101,110,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,49,49,68,101,110,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,49,49,68,101,110,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,105,105,105,105,105,0,118,105,105,105,105,105,0,55,84,114,105,112,108,101,116,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,55,84,114,105,112,108,101,116,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,55,84,114,105,112,108,101,116,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,49,50,83,112,97,114,115,101,77,97,116,114,105,120,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,56,67,104,111,108,101,115,107,121,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,56,67,104,111,108,101,115,107,121,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,50,76,85,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,50,76,85,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,50,81,82,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,50,81,82,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,56,67,104,111,108,101,115,107,121,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,50,76,85,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,80,75,50,81,82,73,78,83,116,51,95,95,50,55,99,111,109,112,108,101,120,73,100,69,69,69,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,50,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,50,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,78,83,116,51,95,95,50,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,78,83,116,51,95,95,50,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,110,97,110,0,76,67,95,65,76,76,0,76,67,95,67,84,89,80,69,0,0,0,0,76,67,95,78,85,77,69,82,73,67,0,0,76,67,95,84,73,77,69,0,0,0,0,0,76,67,95,67,79,76,76,65,84,69,0,0,76,67,95,77,79,78,69,84,65,82,89,0,76,67,95,77,69,83,83,65,71,69,83,0,76,65,78,71,0,67,46,85,84,70,45,56,0,80,79,83,73,88,0,77,85,83,76,95,76,79,67,80,65,84,72,0,78,83,116,51,95,95,50,56,105,111,115,95,98,97,115,101,69,0,78,83,116,51,95,95,50,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,50,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,50,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,50,55,99,111,108,108,97,116,101,73,99,69,69,0,78,83,116,51,95,95,50,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,78,83,116,51,95,95,50,55,99,111,108,108,97,116,101,73,119,69,69,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,37,112,0,67,0,78,83,116,51,95,95,50,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,78,83,116,51,95,95,50,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,78,83,116,51,95,95,50,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,37,112,0,0,0,0,76,0,37,0,0,0,0,0,78,83,116,51,95,95,50,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,50,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,78,83,116,51,95,95,50,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,37,72,58,37,77,58,37,83,0,37,109,47,37,100,47,37,121,0,37,73,58,37,77,58,37,83,32,37,112,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,65,77,0,80,77,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,77,97,114,99,104,0,65,112,114,105,108,0,77,97,121,0,74,117,110,101,0,74,117,108,121,0,65,117,103,117,115,116,0,83,101,112,116,101,109,98,101,114,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,68,101,99,101,109,98,101,114,0,74,97,110,0,70,101,98,0,77,97,114,0,65,112,114,0,74,117,110,0,74,117,108,0,65,117,103,0,83,101,112,0,79,99,116,0,78,111,118,0,68,101,99,0,83,117,110,100,97,121,0,77,111,110,100,97,121,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,84,104,117,114,115,100,97,121,0,70,114,105,100,97,121,0,83,97,116,117,114,100,97,121,0,83,117,110,0,77,111,110,0,84,117,101,0,87,101,100,0,84,104,117,0,70,114,105,0,83,97,116,0,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,37,72,58,37,77,37,72,58,37,77,58,37,83,37,72,58,37,77,58,37,83,78,83,116,51,95,95,50,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,78,83,116,51,95,95,50,57,116,105,109,101,95,98,97,115,101,69,0,78,83,116,51,95,95,50,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,78,83,116,51,95,95,50,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,48,95,95,116,105,109,101,95,112,117,116,69,0,78,83,116,51,95,95,50,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,78,83,116,51,95,95,50,49,48,109,111,110,101,121,95,98,97,115,101,69,0,78,83,116,51,95,95,50,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,78,83,116,51,95,95,50,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,78,83,116,51,95,95,50,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,48,49,50,51,52,53,54,55,56,57,0,37,76,102,0,78,83,116,51,95,95,50,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,48,49,50,51,52,53,54,55,56,57,0,78,83,116,51,95,95,50,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,37,46,48,76,102,0,78,83,116,51,95,95,50,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,50,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,50,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,78,83,116,51,95,95,50,56,109,101,115,115,97,103,101,115,73,99,69,69,0,78,83,116,51,95,95,50,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,78,83,116,51,95,95,50,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,50,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,50,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,78,83,116,51,95,95,50,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,50,56,109,101,115,115,97,103,101,115,73,119,69,69,0,78,83,116,51,95,95,50,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,50,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,50,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,50,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,78,83,116,51,95,95,50,53,99,116,121,112,101,73,99,69,69,0,78,83,116,51,95,95,50,49,48,99,116,121,112,101,95,98,97,115,101,69,0,78,83,116,51,95,95,50,53,99,116,121,112,101,73,119,69,69,0,78,83,116,51,95,95,50,56,110,117,109,112,117,110,99,116,73,99,69,69,0,78,83,116,51,95,95,50,56,110,117,109,112,117,110,99,116,73,119,69,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,114,115,97,119,104,110,101,49,47,68,101,115,107,116,111,112,47,114,101,115,101,97,114,99,104,47,99,111,100,101,47,101,109,115,100,107,45,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,55,46,57,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,78,83,116,51,95,95,50,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,114,115,97,119,104,110,101,49,47,68,101,115,107,116,111,112,47,114,101,115,101,97,114,99,104,47,99,111,100,101,47,101,109,115,100,107,45,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,55,46,57,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,33,34,97,108,108,111,99,97,116,111,114,60,84,62,58,58,97,108,108,111,99,97,116,101,58,58,98,97,100,95,97,108,108,111,99,34,0,47,85,115,101,114,115,47,114,115,97,119,104,110,101,49,47,68,101,115,107,116,111,112,47,114,101,115,101,97,114,99,104,47,99,111,100,101,47,101,109,115,100,107,45,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,55,46,57,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,109,101,109,111,114,121,0,97,108,108,111,99,97,116,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,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,83,116,57,116,121,112,101,95,105,110,102,111,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,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,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,68,110,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,32,99,111,110,115,116,0,32,118,111,108,97,116,105,108,101,0,32,114,101,115,116,114,105,99,116,0,32,99,111,109,112,108,101,120,0,32,105,109,97,103,105,110,97,114,121,0,32,91,0,32,40,0,41,0,40,0,38,38,0,111,98,106,99,95,111,98,106,101,99,116,60,0,42,0,38,0,111,98,106,99,112,114,111,116,111,0,32,0,60,0,62,0,32,118,101,99,116,111,114,91,0,93,0,112,105,120,101,108,32,118,101,99,116,111,114,91,0,38,61,0,61,0,44,0,126,0,58,58,0,100,101,108,101,116,101,91,93,32,0,100,101,108,101,116,101,32,0,47,0,47,61,0,94,0,94,61,0,61,61,0,62,61,0,41,91,0,60,61,0,60,60,0,60,60,61,0,45,0,45,61,0,42,61,0,45,45,0,41,45,45,0,33,61,0,33,0,124,124,0,124,0,124,61,0,45,62,42,0,43,0,43,61,0,43,43,0,41,43,43,0,41,32,63,32,40,0,41,32,58,32,40,0,37,0,37,61,0,62,62,0,62,62,61,0,116,104,114,111,119,0,116,104,114,111,119,32,0,116,121,112,101,105,100,40,0,115,105,122,101,111,102,46,46,46,40,0,44,32,0,115,105,122,101,111,102,32,40,0,115,116,97,116,105,99,95,99,97,115,116,60,0,62,40,0,114,101,105,110,116,101,114,112,114,101,116,95,99,97,115,116,60,0,45,62,0,110,111,101,120,99,101,112,116,32,40,0,91,93,32,0,41,32,0,46,0,46,42,0,115,116,100,58,58,0,111,112,101,114,97,116,111,114,38,38,0,111,112,101,114,97,116,111,114,38,0,111,112,101,114,97,116,111,114,38,61,0,111,112,101,114,97,116,111,114,61,0,111,112,101,114,97,116,111,114,40,41,0,111,112,101,114,97,116,111,114,44,0,111,112,101,114,97,116,111,114,126,0,111,112,101,114,97,116,111,114,32,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0,111,112,101,114,97,116,111,114,42,0,111,112,101,114,97,116,111,114,47,0,111,112,101,114,97,116,111,114,47,61,0,111,112,101,114,97,116,111,114,94,0,111,112,101,114,97,116,111,114,94,61,0,111,112,101,114,97,116,111,114,61,61,0,111,112,101,114,97,116,111,114,62,61,0,111,112,101,114,97,116,111,114,62,0,111,112,101,114,97,116,111,114,91,93,0,111,112,101,114,97,116,111,114,60,61,0,111,112,101,114,97,116,111,114,34,34,32,0,111,112,101,114,97,116,111,114,60,60,0,111,112,101,114,97,116,111,114,60,60,61,0,111,112,101,114,97,116,111,114,60,0,111,112,101,114,97,116,111,114,45,0,111,112,101,114,97,116,111,114,45,61,0,111,112,101,114,97,116,111,114,42,61,0,111,112,101,114,97,116,111,114,45,45,0,111,112,101,114,97,116,111,114,32,110,101,119,91,93,0,111,112,101,114,97,116,111,114,33,61,0,111,112,101,114,97,116,111,114,33,0,111,112,101,114,97,116,111,114,32,110,101,119,0,111,112,101,114,97,116,111,114,124,124,0,111,112,101,114,97,116,111,114,124,0,111,112,101,114,97,116,111,114,124,61,0,111,112,101,114,97,116,111,114,45,62,42,0,111,112,101,114,97,116,111,114,43,0,111,112,101,114,97,116,111,114,43,61,0,111,112,101,114,97,116,111,114,43,43,0,111,112,101,114,97,116,111,114,45,62,0,111,112,101,114,97,116,111,114,63,0,111,112,101,114,97,116,111,114,37,0,111,112,101,114,97,116,111,114,37,61,0,111,112,101,114,97,116,111,114,62,62,0,111,112,101,114,97,116,111,114,62,62,61,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0,39,117,110,110,97,109,101,100,0,39,108,97,109,98,100,97,39,40,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,105,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,115,116,114,101,97,109,0,115,116,100,58,58,111,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,111,115,116,114,101,97,109,0,115,116,100,58,58,105,111,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,111,115,116,114,101,97,109,0,100,121,110,97,109,105,99,95,99,97,115,116,60,0,41,40,0,99,111,110,115,116,95,99,97,115,116,60,0,97,108,105,103,110,111,102,32,40,0,102,112,0,119,99,104,97,114,95,116,0,102,97,108,115,101,0,116,114,117,101,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,117,0,108,0,117,108,0,108,108,0,117,108,108,0,95,95,105,110,116,49,50,56,0,117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0,37,76],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);allocate([97,76,0,37,97,0,37,97,102,0,100,101,99,108,116,121,112,101,40,0,115,116,100,58,58,97,108,108,111,99,97,116,111,114,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0,58,58,115,116,114,105,110,103,32,108,105,116,101,114,97,108,0,115,116,100,0,95,71,76,79,66,65,76,95,95,78,0,40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0,32,62,0,84,95,0,105,100,0,58,58,42,0,32,38,0,32,38,38,0,32,91,93,0,118,111,105,100,0,98,111,111,108,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,108,111,110,103,32,108,111,110,103,0,102,108,111,97,116,0,108,111,110,103,32,100,111,117,98,108,101,0,95,95,102,108,111,97,116,49,50,56,0,46,46,46,0,100,101,99,105,109,97,108,54,52,0,100,101,99,105,109,97,108,49,50,56,0,100,101,99,105,109,97,108,51,50,0,100,101,99,105,109,97,108,49,54,0,99,104,97,114,51,50,95,116,0,99,104,97,114,49,54,95,116,0,97,117,116,111,0,115,116,100,58,58,110,117,108,108,112,116,114,95,116,0,100,111,117,98,108,101,0,117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0,95,98,108,111,99,107,95,105,110,118,111,107,101,0,105,110,118,111,99,97,116,105,111,110,32,102,117,110,99,116,105,111,110,32,102,111,114,32,98,108,111,99,107,32,105,110,32,0,118,116,97,98,108,101,32,102,111,114,32,0,86,84,84,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0,99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0,99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0,45,105,110,45,0,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0,114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+30720);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return(new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n"))(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,(function(message){this.name=errorName;this.message=message;var stack=(new Error(message)).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}}));errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=(function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}});return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach((function(type){typeDependencies[type]=dependentTypes}));function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=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 getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(wt){return!!wt}),"toWireType":(function(destructors,o){return o?trueValue:falseValue}),"argPackAdvance":8,"readValueFromPointer":(function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])}),destructorFunction:null})}Module["_pthread_mutex_lock"]=_pthread_mutex_lock;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=(function(value){return value});if(minRange===0){var bitshift=32-8*size;fromWireType=(function(value){return value<>>bitshift})}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this)}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=(function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)});proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){var ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register((function(){clonedHandle["delete"]()})));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return Object.create(prototype,{$$:{value:record}})}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=value;return value}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){return""}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=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;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}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"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};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,msync:MEMFS.stream_ops.msync}},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;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=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;i0||position+lengthe2.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 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(e){done(this.error);e.preventDefault()});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){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),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{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return 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){if(length===0)return 0;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=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),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.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;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:{},filesystems:null,syncFSRequests:0,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||{};if(!path)return{path:"",node:null};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;i40){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>>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,parent)}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 perms=["r","w","rw"][flag&3];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){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),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(FS.flagsToPermissionString(flags)!=="r"||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}),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}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(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);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}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)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;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 usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";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]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}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.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},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.defineProperties(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>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___cxa_allocate_exception(size){return _malloc(size)}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["_bitshift64Lshr"]=_bitshift64Lshr;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}Module["_pthread_cond_broadcast"]=_pthread_cond_broadcast;var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",(function(){}));dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var argsList="";var argsListWired="";for(var i=0;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=requireFunction(signature,rawInvoker);exposePublicSymbol(name,(function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)}),argCount-1);whenDependentTypesAreResolved([],argTypes,(function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]}))}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],(function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,(function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}return[]}));return[]}))}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}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_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;Module["_sbrk"]=_sbrk;Module["_bitshift64Shl"]=_bitshift64Shl;function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var getHeap,shift;if(charSize===2){getHeap=(function(){return HEAPU16});shift=1}else if(charSize===4){getHeap=(function(){return HEAPU32});shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var HEAP=getHeap();var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],(function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,(function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]}));return[]}))}var ___dso_handle=STATICTOP;STATICTOP+=16;embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((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;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiid"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}function invoke_iidd(index,a1,a2,a3){try{return Module["dynCall_iidd"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["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;Module["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;Module["setThrew"](1,0)}}function invoke_iiid(index,a1,a2,a3){try{return Module["dynCall_iiid"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_di(index,a1){try{return Module["dynCall_di"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiid(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}function invoke_diii(index,a1,a2,a3){try{return Module["dynCall_diii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diiii(index,a1,a2,a3,a4){try{return Module["dynCall_diiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_dii(index,a1,a2){try{return Module["dynCall_dii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiid(index,a1,a2,a3,a4){try{return Module["dynCall_iiiid"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["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;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["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;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiiiiiii":invoke_iiiiiiii,"invoke_iiiiiid":invoke_iiiiiid,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_iidd":invoke_iidd,"invoke_iiiii":invoke_iiiii,"invoke_iiii":invoke_iiii,"invoke_viiiiii":invoke_viiiiii,"invoke_iiid":invoke_iiid,"invoke_di":invoke_di,"invoke_viiiid":invoke_viiiid,"invoke_iiiiiiiii":invoke_iiiiiiiii,"invoke_iii":invoke_iii,"invoke_diii":invoke_diii,"invoke_diiii":invoke_diiii,"invoke_dii":invoke_dii,"invoke_iiiid":invoke_iiiid,"invoke_iiiiii":invoke_iiiiii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viid":invoke_viid,"invoke_iiiiid":invoke_iiiiid,"invoke_viiii":invoke_viiii,"floatReadValueFromPointer":floatReadValueFromPointer,"simpleReadValueFromPointer":simpleReadValueFromPointer,"throwInternalError":throwInternalError,"get_first_emval":get_first_emval,"getLiveInheritedInstances":getLiveInheritedInstances,"___assert_fail":___assert_fail,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"ClassHandle":ClassHandle,"getShiftFromSize":getShiftFromSize,"__addDays":__addDays,"___cxa_begin_catch":___cxa_begin_catch,"_emscripten_memcpy_big":_emscripten_memcpy_big,"runDestructor":runDestructor,"throwInstanceAlreadyDeleted":throwInstanceAlreadyDeleted,"__embind_register_std_string":__embind_register_std_string,"init_RegisteredPointer":init_RegisteredPointer,"ClassHandle_isAliasOf":ClassHandle_isAliasOf,"flushPendingDeletes":flushPendingDeletes,"makeClassHandle":makeClassHandle,"whenDependentTypesAreResolved":whenDependentTypesAreResolved,"__embind_register_class_constructor":__embind_register_class_constructor,"___cxa_atexit":___cxa_atexit,"init_ClassHandle":init_ClassHandle,"___syscall140":___syscall140,"ClassHandle_clone":ClassHandle_clone,"___syscall146":___syscall146,"RegisteredClass":RegisteredClass,"___cxa_find_matching_catch":___cxa_find_matching_catch,"embind_init_charCodes":embind_init_charCodes,"___setErrNo":___setErrNo,"__embind_register_class_class_function":__embind_register_class_class_function,"__embind_register_bool":__embind_register_bool,"___resumeException":___resumeException,"createNamedFunction":createNamedFunction,"___syscall91":___syscall91,"__emval_decref":__emval_decref,"_pthread_once":_pthread_once,"_llvm_trap":_llvm_trap,"__embind_register_class":__embind_register_class,"constNoSmartPtrRawPointerToWireType":constNoSmartPtrRawPointerToWireType,"heap32VectorToArray":heap32VectorToArray,"ClassHandle_delete":ClassHandle_delete,"RegisteredPointer_destructor":RegisteredPointer_destructor,"___syscall6":___syscall6,"ensureOverloadTable":ensureOverloadTable,"__embind_register_emval":__embind_register_emval,"new_":new_,"downcastPointer":downcastPointer,"replacePublicSymbol":replacePublicSymbol,"init_embind":init_embind,"ClassHandle_deleteLater":ClassHandle_deleteLater,"integerReadValueFromPointer":integerReadValueFromPointer,"RegisteredPointer_deleteObject":RegisteredPointer_deleteObject,"ClassHandle_isDeleted":ClassHandle_isDeleted,"__embind_register_integer":__embind_register_integer,"___cxa_allocate_exception":___cxa_allocate_exception,"___buildEnvironment":___buildEnvironment,"__isLeapYear":__isLeapYear,"_embind_repr":_embind_repr,"_pthread_getspecific":_pthread_getspecific,"throwUnboundTypeError":throwUnboundTypeError,"craftInvokerFunction":craftInvokerFunction,"_getenv":_getenv,"runDestructors":runDestructors,"makeLegalFunctionName":makeLegalFunctionName,"_pthread_key_create":_pthread_key_create,"upcastPointer":upcastPointer,"init_emval":init_emval,"shallowCopyInternalPointer":shallowCopyInternalPointer,"nonConstNoSmartPtrRawPointerToWireType":nonConstNoSmartPtrRawPointerToWireType,"_abort":_abort,"throwBindingError":throwBindingError,"getTypeName":getTypeName,"exposePublicSymbol":exposePublicSymbol,"RegisteredPointer_fromWireType":RegisteredPointer_fromWireType,"_strftime":_strftime,"_pthread_cond_wait":_pthread_cond_wait,"___lock":___lock,"__embind_register_memory_view":__embind_register_memory_view,"getInheritedInstance":getInheritedInstance,"setDelayFunction":setDelayFunction,"___gxx_personality_v0":___gxx_personality_v0,"extendError":extendError,"__embind_register_void":__embind_register_void,"__embind_register_function":__embind_register_function,"_strftime_l":_strftime_l,"RegisteredPointer_getPointee":RegisteredPointer_getPointee,"__emval_register":__emval_register,"__embind_register_std_wstring":__embind_register_std_wstring,"__embind_register_class_function":__embind_register_class_function,"RegisteredPointer":RegisteredPointer,"__arraySum":__arraySum,"readLatin1String":readLatin1String,"getBasestPointer":getBasestPointer,"getInheritedInstanceCount":getInheritedInstanceCount,"__embind_register_float":__embind_register_float,"___syscall54":___syscall54,"___unlock":___unlock,"_pthread_setspecific":_pthread_setspecific,"genericPointerToWireType":genericPointerToWireType,"registerType":registerType,"___cxa_throw":___cxa_throw,"count_emval_handles":count_emval_handles,"requireFunction":requireFunction,"_atexit":_atexit,"___map_file":___map_file,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"cttz_i8":cttz_i8,"___dso_handle":___dso_handle};// EMSCRIPTEN_START_ASM -var asm=(function(global,env,buffer) { -"almost asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=env.cttz_i8|0;var x=env.___dso_handle|0;var y=0;var z=0;var A=0;var B=0;var C=global.NaN,D=global.Infinity;var E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.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=global.Math.min;var ca=global.Math.max;var da=global.Math.clz32;var ea=env.abort;var fa=env.assert;var ga=env.enlargeMemory;var ha=env.getTotalMemory;var ia=env.abortOnCannotGrowMemory;var ja=env.invoke_iiiiiiii;var ka=env.invoke_iiiiiid;var la=env.invoke_viiiii;var ma=env.invoke_vi;var na=env.invoke_vii;var oa=env.invoke_iiiiiii;var pa=env.invoke_ii;var qa=env.invoke_iidd;var ra=env.invoke_iiiii;var sa=env.invoke_iiii;var ta=env.invoke_viiiiii;var ua=env.invoke_iiid;var va=env.invoke_di;var wa=env.invoke_viiiid;var xa=env.invoke_iiiiiiiii;var ya=env.invoke_iii;var za=env.invoke_diii;var Aa=env.invoke_diiii;var Ba=env.invoke_dii;var Ca=env.invoke_iiiid;var Da=env.invoke_iiiiii;var Ea=env.invoke_viii;var Fa=env.invoke_v;var Ga=env.invoke_viid;var Ha=env.invoke_iiiiid;var Ia=env.invoke_viiii;var Ja=env.floatReadValueFromPointer;var Ka=env.simpleReadValueFromPointer;var La=env.throwInternalError;var Ma=env.get_first_emval;var Na=env.getLiveInheritedInstances;var Oa=env.___assert_fail;var Pa=env.__ZSt18uncaught_exceptionv;var Qa=env.ClassHandle;var Ra=env.getShiftFromSize;var Sa=env.__addDays;var Ta=env.___cxa_begin_catch;var Ua=env._emscripten_memcpy_big;var Va=env.runDestructor;var Wa=env.throwInstanceAlreadyDeleted;var Xa=env.__embind_register_std_string;var Ya=env.init_RegisteredPointer;var Za=env.ClassHandle_isAliasOf;var _a=env.flushPendingDeletes;var $a=env.makeClassHandle;var ab=env.whenDependentTypesAreResolved;var bb=env.__embind_register_class_constructor;var cb=env.___cxa_atexit;var db=env.init_ClassHandle;var eb=env.___syscall140;var fb=env.ClassHandle_clone;var gb=env.___syscall146;var hb=env.RegisteredClass;var ib=env.___cxa_find_matching_catch;var jb=env.embind_init_charCodes;var kb=env.___setErrNo;var lb=env.__embind_register_class_class_function;var mb=env.__embind_register_bool;var nb=env.___resumeException;var ob=env.createNamedFunction;var pb=env.___syscall91;var qb=env.__emval_decref;var rb=env._pthread_once;var sb=env._llvm_trap;var tb=env.__embind_register_class;var ub=env.constNoSmartPtrRawPointerToWireType;var vb=env.heap32VectorToArray;var wb=env.ClassHandle_delete;var xb=env.RegisteredPointer_destructor;var yb=env.___syscall6;var zb=env.ensureOverloadTable;var Ab=env.__embind_register_emval;var Bb=env.new_;var Cb=env.downcastPointer;var Db=env.replacePublicSymbol;var Eb=env.init_embind;var Fb=env.ClassHandle_deleteLater;var Gb=env.integerReadValueFromPointer;var Hb=env.RegisteredPointer_deleteObject;var Ib=env.ClassHandle_isDeleted;var Jb=env.__embind_register_integer;var Kb=env.___cxa_allocate_exception;var Lb=env.___buildEnvironment;var Mb=env.__isLeapYear;var Nb=env._embind_repr;var Ob=env._pthread_getspecific;var Pb=env.throwUnboundTypeError;var Qb=env.craftInvokerFunction;var Rb=env._getenv;var Sb=env.runDestructors;var Tb=env.makeLegalFunctionName;var Ub=env._pthread_key_create;var Vb=env.upcastPointer;var Wb=env.init_emval;var Xb=env.shallowCopyInternalPointer;var Yb=env.nonConstNoSmartPtrRawPointerToWireType;var Zb=env._abort;var _b=env.throwBindingError;var $b=env.getTypeName;var ac=env.exposePublicSymbol;var bc=env.RegisteredPointer_fromWireType;var cc=env._strftime;var dc=env._pthread_cond_wait;var ec=env.___lock;var fc=env.__embind_register_memory_view;var gc=env.getInheritedInstance;var hc=env.setDelayFunction;var ic=env.___gxx_personality_v0;var jc=env.extendError;var kc=env.__embind_register_void;var lc=env.__embind_register_function;var mc=env._strftime_l;var nc=env.RegisteredPointer_getPointee;var oc=env.__emval_register;var pc=env.__embind_register_std_wstring;var qc=env.__embind_register_class_function;var rc=env.RegisteredPointer;var sc=env.__arraySum;var tc=env.readLatin1String;var uc=env.getBasestPointer;var vc=env.getInheritedInstanceCount;var wc=env.__embind_register_float;var xc=env.___syscall54;var yc=env.___unlock;var zc=env._pthread_setspecific;var Ac=env.genericPointerToWireType;var Bc=env.registerType;var Cc=env.___cxa_throw;var Dc=env.count_emval_handles;var Ec=env.requireFunction;var Fc=env._atexit;var Gc=env.___map_file;var Hc=0.0;function Ic(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function hd(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function id(){return u|0}function jd(a){a=a|0;u=a}function kd(a,b){a=a|0;b=b|0;u=a;v=b}function ld(a,b){a=a|0;b=b|0;if(!y){y=a;z=b}}function md(a){a=a|0;N=a}function nd(){return N|0}function od(a){a=a|0;tb(8,16,32,0,11906,52,11909,0,11909,0,11404,11911,84);bb(8,3,2224,11914,22,11);bb(8,2,2236,12787,12,53);lb(8,11416,3,2244,11914,23,1);lb(8,11425,3,2244,11914,23,2);lb(8,11430,4,2256,12791,1,8);lb(8,11439,3,2244,11914,23,3);a=CA(8)|0;k[a>>2]=34;k[a+4>>2]=0;qc(8,11446,2,2272,12787,13,a|0,0);a=CA(8)|0;k[a>>2]=54;k[a+4>>2]=0;qc(8,11456,2,2280,12787,14,a|0,0);a=CA(8)|0;k[a>>2]=55;k[a+4>>2]=0;qc(8,11462,2,2280,12787,14,a|0,0);a=CA(8)|0;k[a>>2]=1;k[a+4>>2]=0;qc(8,11468,3,2288,13354,1,a|0,0);a=CA(8)|0;k[a>>2]=1;k[a+4>>2]=0;qc(8,11473,2,2300,15269,2,a|0,0);a=CA(8)|0;k[a>>2]=2;k[a+4>>2]=0;qc(8,11478,2,2300,15269,2,a|0,0);a=CA(8)|0;k[a>>2]=8;k[a+4>>2]=0;qc(8,11482,6,2308,15273,39,a|0,0);a=CA(8)|0;k[a>>2]=35;k[a+4>>2]=0;qc(8,11492,3,2332,15281,1,a|0,0);a=CA(8)|0;k[a>>2]=36;k[a+4>>2]=0;qc(8,11500,3,2344,15286,4,a|0,0);a=CA(8)|0;k[a>>2]=37;k[a+4>>2]=0;qc(8,11512,3,2344,15286,4,a|0,0);a=CA(8)|0;k[a>>2]=5;k[a+4>>2]=0;qc(8,11524,3,2356,15291,1,a|0,0);a=CA(8)|0;k[a>>2]=6;k[a+4>>2]=0;qc(8,11534,3,2368,11914,24,a|0,0);a=CA(8)|0;k[a>>2]=7;k[a+4>>2]=0;qc(8,11545,3,2368,11914,24,a|0,0);a=CA(8)|0;k[a>>2]=8;k[a+4>>2]=0;qc(8,11550,3,2368,11914,24,a|0,0);a=CA(8)|0;k[a>>2]=38;k[a+4>>2]=0;qc(8,11556,2,2380,12787,15,a|0,0);a=CA(8)|0;k[a>>2]=2;k[a+4>>2]=0;qc(8,11564,4,2388,15771,1,a|0,0);a=CA(8)|0;k[a>>2]=9;k[a+4>>2]=0;qc(8,11568,5,2404,15777,1,a|0,0);a=CA(8)|0;k[a>>2]=9;k[a+4>>2]=0;qc(8,11572,3,2368,11914,24,a|0,0);a=CA(8)|0;k[a>>2]=10;k[a+4>>2]=0;qc(8,11577,3,2368,11914,24,a|0,0);tb(48,56,72,0,11906,56,11909,0,11909,0,11582,11911,85);bb(48,3,2424,11914,25,16);a=CA(8)|0;k[a>>2]=10;k[a+4>>2]=0;qc(48,11590,5,2436,15777,2,a|0,0);tb(88,96,112,0,11906,57,11909,0,11909,0,11599,11911,86);bb(88,3,2456,11914,26,17);bb(88,2,2468,12787,18,58);lb(88,11416,3,2476,11914,27,11);lb(88,11612,2,2488,12787,19,39);a=CA(8)|0;k[a>>2]=40;k[a+4>>2]=0;qc(88,11446,2,2496,12787,20,a|0,0);a=CA(8)|0;k[a>>2]=59;k[a+4>>2]=0;qc(88,11456,2,2504,12787,21,a|0,0);a=CA(8)|0;k[a>>2]=60;k[a+4>>2]=0;qc(88,11462,2,2504,12787,21,a|0,0);a=CA(8)|0;k[a>>2]=61;k[a+4>>2]=0;qc(88,11617,2,2504,12787,21,a|0,0);a=CA(8)|0;k[a>>2]=3;k[a+4>>2]=0;qc(88,11621,2,2512,15269,3,a|0,0);a=CA(8)|0;k[a>>2]=9;k[a+4>>2]=0;qc(88,11482,6,2520,15273,40,a|0,0);a=CA(8)|0;k[a>>2]=41;k[a+4>>2]=0;qc(88,11635,2,2544,12787,22,a|0,0);a=CA(8)|0;k[a>>2]=62;k[a+4>>2]=0;qc(88,11643,2,2552,12787,23,a|0,0);a=CA(8)|0;k[a>>2]=63;k[a+4>>2]=0;qc(88,11648,2,2560,12787,24,a|0,0);a=CA(8)|0;k[a>>2]=64;k[a+4>>2]=0;qc(88,11651,2,2568,12787,25,a|0,0);a=CA(8)|0;k[a>>2]=42;k[a+4>>2]=0;qc(88,11492,3,2576,15281,2,a|0,0);a=CA(8)|0;k[a>>2]=43;k[a+4>>2]=0;qc(88,11500,3,2588,15286,12,a|0,0);a=CA(8)|0;k[a>>2]=44;k[a+4>>2]=0;qc(88,11512,3,2588,15286,12,a|0,0);a=CA(8)|0;k[a>>2]=13;k[a+4>>2]=0;qc(88,11524,3,2600,15291,2,a|0,0);a=CA(8)|0;k[a>>2]=14;k[a+4>>2]=0;qc(88,11654,3,2740,11914,28,a|0,0);a=CA(8)|0;k[a>>2]=15;k[a+4>>2]=0;qc(88,11545,3,2740,11914,28,a|0,0);a=CA(8)|0;k[a>>2]=16;k[a+4>>2]=0;qc(88,11550,3,2740,11914,28,a|0,0);a=CA(8)|0;k[a>>2]=17;k[a+4>>2]=0;qc(88,11534,3,2752,11914,29,a|0,0);tb(128,136,200,0,11906,65,11909,0,11909,0,11666,11911,87);bb(128,2,2764,12787,26,66);a=CA(8)|0;k[a>>2]=18;k[a+4>>2]=0;qc(128,11675,3,2772,11914,30,a|0,0);tb(152,160,216,0,11906,67,11909,0,11909,0,11697,11911,88);bb(152,2,2784,12787,27,68);a=CA(8)|0;k[a>>2]=19;k[a+4>>2]=0;qc(152,11700,3,2912,11914,31,a|0,0);tb(176,184,304,0,11906,69,11909,0,11909,0,11712,11911,89);bb(176,2,2924,12787,28,70);a=CA(8)|0;k[a>>2]=20;k[a+4>>2]=0;qc(176,11715,3,2932,11914,32,a|0,0);tb(320,328,344,0,11906,71,11909,0,11909,0,11721,11911,90);bb(320,3,2944,21173,1,29);lc(11729,2,2956,15269,4,4);lc(11734,2,2956,15269,4,5);tb(360,368,384,0,11906,72,11909,0,11909,0,11739,11911,91);bb(360,3,2964,11914,33,30);bb(360,2,2976,12787,31,73);lb(360,11416,3,2984,11914,34,21);lb(360,11425,3,2984,11914,34,22);lb(360,11430,4,2996,21286,6,11);lb(360,11439,3,2984,11914,34,23);a=CA(8)|0;k[a>>2]=45;k[a+4>>2]=0;qc(360,11446,2,3012,12787,32,a|0,0);a=CA(8)|0;k[a>>2]=46;k[a+4>>2]=0;qc(360,11758,2,3012,12787,32,a|0,0);a=CA(8)|0;k[a>>2]=74;k[a+4>>2]=0;qc(360,11456,2,3020,12787,33,a|0,0);a=CA(8)|0;k[a>>2]=75;k[a+4>>2]=0;qc(360,11462,2,3020,12787,33,a|0,0);a=CA(8)|0;k[a>>2]=5;k[a+4>>2]=0;qc(360,11468,3,3028,13354,3,a|0,0);a=CA(8)|0;k[a>>2]=6;k[a+4>>2]=0;qc(360,11473,2,3040,15269,6,a|0,0);a=CA(8)|0;k[a>>2]=47;k[a+4>>2]=0;qc(360,11478,2,3048,12787,34,a|0,0);a=CA(8)|0;k[a>>2]=10;k[a+4>>2]=0;qc(360,11482,6,3056,15273,41,a|0,0);a=CA(8)|0;k[a>>2]=48;k[a+4>>2]=0;qc(360,11492,3,3080,15286,24,a|0,0);a=CA(8)|0;k[a>>2]=49;k[a+4>>2]=0;qc(360,11500,3,3092,15286,25,a|0,0);a=CA(8)|0;k[a>>2]=50;k[a+4>>2]=0;qc(360,11512,3,3092,15286,25,a|0,0);a=CA(8)|0;k[a>>2]=26;k[a+4>>2]=0;qc(360,11768,3,3104,11914,35,a|0,0);a=CA(8)|0;k[a>>2]=27;k[a+4>>2]=0;qc(360,11534,3,3116,11914,36,a|0,0);a=CA(8)|0;k[a>>2]=28;k[a+4>>2]=0;qc(360,11545,3,3116,11914,36,a|0,0);a=CA(8)|0;k[a>>2]=29;k[a+4>>2]=0;qc(360,11550,3,3116,11914,36,a|0,0);a=CA(8)|0;k[a>>2]=51;k[a+4>>2]=0;qc(360,11556,2,3128,12787,35,a|0,0);a=CA(8)|0;k[a>>2]=12;k[a+4>>2]=0;qc(360,11564,4,3136,21286,7,a|0,0);a=CA(8)|0;k[a>>2]=13;k[a+4>>2]=0;qc(360,11568,5,3152,21292,4,a|0,0);a=CA(8)|0;k[a>>2]=30;k[a+4>>2]=0;qc(360,11572,3,3116,11914,36,a|0,0);a=CA(8)|0;k[a>>2]=31;k[a+4>>2]=0;qc(360,11577,3,3116,11914,36,a|0,0);tb(400,408,424,0,11906,76,11909,0,11909,0,11781,11911,92);bb(400,3,3172,11914,37,36);a=CA(8)|0;k[a>>2]=14;k[a+4>>2]=0;qc(400,11590,5,3184,21292,5,a|0,0);tb(440,448,464,0,11906,77,11909,0,11909,0,11796,11911,93);bb(440,3,3204,11914,38,37);bb(440,2,3216,12787,38,78);lb(440,11416,3,3224,11914,39,32);lb(440,11612,2,3236,12787,39,52);a=CA(8)|0;k[a>>2]=53;k[a+4>>2]=0;qc(440,11446,2,3244,12787,40,a|0,0);a=CA(8)|0;k[a>>2]=54;k[a+4>>2]=0;qc(440,11758,2,3244,12787,40,a|0,0);a=CA(8)|0;k[a>>2]=79;k[a+4>>2]=0;qc(440,11456,2,3252,12787,41,a|0,0);a=CA(8)|0;k[a>>2]=80;k[a+4>>2]=0;qc(440,11462,2,3252,12787,41,a|0,0);a=CA(8)|0;k[a>>2]=81;k[a+4>>2]=0;qc(440,11617,2,3252,12787,41,a|0,0);a=CA(8)|0;k[a>>2]=7;k[a+4>>2]=0;qc(440,11621,2,3260,15269,7,a|0,0);a=CA(8)|0;k[a>>2]=11;k[a+4>>2]=0;qc(440,11482,6,3268,15273,42,a|0,0);a=CA(8)|0;k[a>>2]=55;k[a+4>>2]=0;qc(440,11635,2,3292,12787,42,a|0,0);a=CA(8)|0;k[a>>2]=82;k[a+4>>2]=0;qc(440,11643,2,3300,12787,43,a|0,0);a=CA(8)|0;k[a>>2]=83;k[a+4>>2]=0;qc(440,11648,2,3308,12787,44,a|0,0);a=CA(8)|0;k[a>>2]=84;k[a+4>>2]=0;qc(440,11651,2,3316,12787,45,a|0,0);a=CA(8)|0;k[a>>2]=56;k[a+4>>2]=0;qc(440,11492,3,3324,15286,33,a|0,0);a=CA(8)|0;k[a>>2]=57;k[a+4>>2]=0;qc(440,11500,3,3336,15286,34,a|0,0);a=CA(8)|0;k[a>>2]=58;k[a+4>>2]=0;qc(440,11512,3,3336,15286,34,a|0,0);a=CA(8)|0;k[a>>2]=35;k[a+4>>2]=0;qc(440,11768,3,3348,11914,40,a|0,0);a=CA(8)|0;k[a>>2]=36;k[a+4>>2]=0;qc(440,11654,3,3360,11914,41,a|0,0);a=CA(8)|0;k[a>>2]=37;k[a+4>>2]=0;qc(440,11545,3,3360,11914,41,a|0,0);a=CA(8)|0;k[a>>2]=38;k[a+4>>2]=0;qc(440,11550,3,3360,11914,41,a|0,0);a=CA(8)|0;k[a>>2]=39;k[a+4>>2]=0;qc(440,11534,3,3372,11914,42,a|0,0);tb(480,488,552,0,11906,85,11909,0,11909,0,11816,11911,94);bb(480,2,3384,12787,46,86);a=CA(8)|0;k[a>>2]=40;k[a+4>>2]=0;qc(480,11675,3,3392,11914,43,a|0,0);tb(504,512,568,0,11906,87,11909,0,11909,0,11832,11911,95);bb(504,2,3404,12787,47,88);a=CA(8)|0;k[a>>2]=41;k[a+4>>2]=0;qc(504,11700,3,3412,11914,44,a|0,0);tb(528,536,584,0,11906,89,11909,0,11909,0,11842,11911,96);bb(528,2,3424,12787,48,90);a=CA(8)|0;k[a>>2]=42;k[a+4>>2]=0;qc(528,11715,3,3432,11914,45,a|0,0);return}function pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((c|b|0)<=-1)Oa(11919,12068,74,12145);qf(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+16|0;e=f;k[e>>2]=b;k[e+4>>2]=c;p[e+8>>3]=1.0;if((c|b|0)<=-1)Oa(11919,12068,74,12145);tf(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function rd(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.0;g=u;u=u+32|0;e=g+16|0;f=g;h=+p[d>>3];k[f>>2]=b;k[f+4>>2]=c;p[f+8>>3]=h;if((c|b|0)<=-1)Oa(11919,12068,74,12145);tf(e,f);pf(a,e);a=k[e>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((c|b|0)<=-1)Oa(11919,12068,74,12145);vf(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;l=n;k[l>>2]=0;i=l+4|0;k[i>>2]=0;j=l+8|0;k[j>>2]=0;g=b+8|0;c=k[g>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}mf(l,c,d);c=k[l>>2]|0;h=k[b>>2]|0;if((c|0)!=0&(h|0)==(c|0))Oa(12797,13072,378,13144);f=k[e>>2]|0;e=k[g>>2]|0;do if(!((k[i>>2]|0)==(e|0)?(k[j>>2]|0)==(f|0):0)){mf(l,e,f);if((k[i>>2]|0)==(e|0)?(k[j>>2]|0)==(f|0):0){m=k[l>>2]|0;break}else Oa(12160,12207,721,12285)}else m=c;while(0);if((f|0)>0&(e|0)>0){c=0;do{b=aa(c,e)|0;d=0;do{j=h+((aa(d,f)|0)+c<<3)|0;p[m+(d+b<<3)>>3]=+p[j>>3];d=d+1|0}while((d|0)!=(e|0));c=c+1|0}while((c|0)!=(f|0))}pf(a,l);c=k[l>>2]|0;if(!c){u=n;return}Pq(k[c+-4>>2]|0);u=n;return}function ud(a){a=a|0;return k[a+4>>2]|0}function vd(a){a=a|0;return k[a+8>>2]|0}function wd(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0;f=u;u=u+16|0;d=f+8|0;e=f;switch(b|0){case 0:{if(!(aa(k[a+8>>2]|0,k[a+4>>2]|0)|0)){c=0.0;u=f;return +c}k[e>>2]=a;c=+yf(e,d);u=f;return +c}case 1:{k[e>>2]=a;if(!(aa(k[a+8>>2]|0,k[a+4>>2]|0)|0))c=0.0;else c=+zf(e,d);u=f;return +c}default:{k[e>>2]=a;if(!(aa(k[a+8>>2]|0,k[a+4>>2]|0)|0))c=0.0;else c=+Af(e,d);c=+Q(+c);u=f;return +c}}return 0.0}function xd(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0,g=0,h=0,j=0,l=0;j=u;u=u+96|0;h=j;Cf(h,a);a=i[h+60>>0]|0;if(!(a<<24>>24))Oa(15154,13497,258,11473);d=+P(+(+p[h+72>>3]));c=i[h+61>>0]|0;if(!((c|a)<<24>>24))Oa(15215,13497,380,15259);if(!(c<<24>>24)){g=k[h+4>>2]|0;f=k[h+8>>2]|0;b=+(((f|0)<(g|0)?f:g)|0)*2.220446049250313e-16}else b=+p[h+64>>3];b=d*b;e=k[h+80>>2]|0;if((e|0)>0){f=k[h>>2]|0;g=k[h+4>>2]|0;a=0;c=0;do{l=f+((aa(c,g)|0)+c<<3)|0;a=(+P(+(+p[l>>3]))>b&1)+a|0;c=c+1|0}while((c|0)!=(e|0));b=+(a|0)}else b=0.0;a=k[h+52>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+44>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+36>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+28>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+20>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+12>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h>>2]|0;if(!a){u=j;return +b}Pq(k[a+-4>>2]|0);u=j;return +b}function yd(a){a=a|0;var b=0.0,c=0,d=0,e=0,f=0,g=0;f=k[a+4>>2]|0;g=k[a+8>>2]|0;if(!(aa(g,f)|0)){b=0.0;return +b}if(!((f|0)>0&(g|0)>0))Oa(13148,13216,413,13284);e=k[a>>2]|0;b=+p[e>>3];if((f|0)>1){a=1;do{b=b+ +p[e+(a<<3)>>3];a=a+1|0}while((a|0)!=(f|0))}if((g|0)>1)d=1;else return +b;do{c=aa(d,f)|0;a=0;do{b=b+ +p[e+(a+c<<3)>>3];a=a+1|0}while((a|0)<(f|0));d=d+1|0}while((d|0)!=(g|0));return +b}function zd(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 g=0,h=0,i=0,j=0,l=0;j=u;u=u+48|0;h=j+28|0;i=j;g=d-c|0;f=f-e|0;d=k[b+4>>2]|0;l=(k[b>>2]|0)+(c<<3)+((aa(d,e)|0)<<3)|0;k[i>>2]=l;k[i+4>>2]=g;k[i+8>>2]=f;if(!((f|g|0)>-1|(l|0)==0))Oa(13818,13988,175,14058);k[i+12>>2]=b;k[i+16>>2]=c;k[i+20>>2]=e;k[i+24>>2]=d;if((g|c|0)<=-1)Oa(14177,13744,147,13812);if(!((f|e|0)>-1&(d-g|0)>=(c|0)))Oa(14177,13744,147,13812);if(((k[b+8>>2]|0)-f|0)<(e|0))Oa(14177,13744,147,13812);Pf(h,i);pf(a,h);d=k[h>>2]|0;if(!d){u=j;return}Pq(k[d+-4>>2]|0);u=j;return}function Ad(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;f=+p[b>>3];if((d|c|0)<=-1)Oa(11919,12068,74,12145);e=k[a>>2]|0;a=aa(d,c)|0;if((a|0)>0)b=0;else return;do{d=e+(b<<3)|0;p[d>>3]=f*+p[d>>3];b=b+1|0}while((b|0)!=(a|0));return}function Bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=k[b>>2]|0;d=k[a+4>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(14392,12207,710,12285);e=k[a+8>>2]|0;if((e|0)!=(k[b+8>>2]|0))Oa(14392,12207,710,12285);c=k[a>>2]|0;b=aa(e,d)|0;if((b|0)>0)a=0;else return;do{e=c+(a<<3)|0;p[e>>3]=+p[f+(a<<3)>>3]+ +p[e>>3];a=a+1|0}while((a|0)!=(b|0));return}function Cd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=k[b>>2]|0;d=k[a+4>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(14392,12207,710,12285);e=k[a+8>>2]|0;if((e|0)!=(k[b+8>>2]|0))Oa(14392,12207,710,12285);c=k[a>>2]|0;b=aa(e,d)|0;if((b|0)>0)a=0;else return;do{e=c+(a<<3)|0;p[e>>3]=+p[e>>3]-+p[f+(a<<3)>>3];a=a+1|0}while((a|0)!=(b|0));return}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0.0;h=u;u=u+48|0;d=h+32|0;e=h;f=k[b+4>>2]|0;g=k[b+8>>2]|0;if((g|f|0)<=-1)Oa(11919,12068,74,12145);i=+p[c>>3];k[e>>2]=b;c=e+8|0;k[c>>2]=f;k[c+4>>2]=g;p[e+16>>3]=i;Tf(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=h;return}Pq(k[a+-4>>2]|0);u=h;return}function Ed(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+8>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);Vf(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14550,14607,110,14683);if((k[b+8>>2]|0)!=(k[c+8>>2]|0))Oa(14550,14607,110,14683);eg(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function Gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14550,14607,110,14683);if((k[b+8>>2]|0)!=(k[c+8>>2]|0))Oa(14550,14607,110,14683);fg(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=u;u=u+48|0;c=g+32|0;d=g;e=k[b+4>>2]|0;f=k[b+8>>2]|0;if((f|e|0)<=-1)Oa(11919,12068,74,12145);k[d>>2]=b;b=d+8|0;k[b>>2]=e;k[b+4>>2]=f;p[d+16>>3]=-1.0;Tf(c,d);pf(a,c);a=k[c>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function Id(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(((b|0)>-1?(d=k[a+4>>2]|0,(c|0)>-1&(d|0)>(b|0)):0)?(k[a+8>>2]|0)>(c|0):0){d=(k[a>>2]|0)+((aa(d,c)|0)+b<<3)|0;return +(+p[d>>3])}Oa(15640,15693,118,29764);return +(0.0)}function Jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0;e=+p[d>>3];if(((b|0)>-1?(f=k[a+4>>2]|0,(c|0)>-1&(f|0)>(b|0)):0)?(k[a+8>>2]|0)>(c|0):0){f=(k[a>>2]|0)+((aa(f,c)|0)+b<<3)|0;p[f>>3]=e;return}Oa(15640,15693,365,29764)}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;l=b+4|0;s=k[l>>2]|0;t=b+8|0;u=k[t>>2]|0;v=c+8|0;w=k[v>>2]|0;lf(a,s,w+u|0);if((s|0)<=0)return;n=a+4|0;o=a+8|0;q=(w|0)>0;r=c+4|0;if((u|0)<=0){d=0;a:while(1){if(q){f=k[r>>2]|0;g=(f|0)>(d|0);e=0;do{if(!g){d=24;break a}if((k[v>>2]|0)<=(e|0)){d=24;break a}h=(k[c>>2]|0)+((aa(f,e)|0)+d<<3)|0;i=e+u|0;j=k[n>>2]|0;if(!((i|0)>-1&(j|0)>(d|0))){d=27;break a}if((k[o>>2]|0)<=(i|0)){d=27;break a}m=(k[a>>2]|0)+((aa(j,i)|0)+d<<3)|0;p[m>>3]=+p[h>>3];e=e+1|0}while((e|0)<(w|0))}d=d+1|0;if((d|0)>=(s|0)){d=29;break}}if((d|0)==24)Oa(15640,15693,365,29764);else if((d|0)==27)Oa(15640,15693,365,29764);else if((d|0)==29)return}i=k[l>>2]|0;h=0;b:while(1){e=(i|0)>(h|0);d=0;do{if(!e){d=19;break b}if((k[t>>2]|0)<=(d|0)){d=19;break b}f=(k[b>>2]|0)+((aa(i,d)|0)+h<<3)|0;l=k[n>>2]|0;if((l|0)<=(h|0)){d=20;break b}j=k[o>>2]|0;if((j|0)<=(d|0)){d=20;break b}m=k[a>>2]|0;g=m+((aa(l,d)|0)+h<<3)|0;p[g>>3]=+p[f>>3];d=d+1|0}while((d|0)<(u|0));if(q){e=k[r>>2]|0;g=(e|0)>(h|0);d=0;do{if(!g){d=24;break b}if((k[v>>2]|0)<=(d|0)){d=24;break b}f=d+u|0;if(!((f|0)>-1&(j|0)>(f|0))){d=27;break b}x=(k[c>>2]|0)+((aa(e,d)|0)+h<<3)|0;f=m+((aa(l,f)|0)+h<<3)|0;p[f>>3]=+p[x>>3];d=d+1|0}while((d|0)<(w|0))}h=h+1|0;if((h|0)>=(s|0)){d=29;break}}if((d|0)==19)Oa(15640,15693,365,29764);else if((d|0)==20)Oa(15640,15693,365,29764);else if((d|0)==24)Oa(15640,15693,365,29764);else if((d|0)==27)Oa(15640,15693,365,29764);else if((d|0)==29)return}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;q=b+4|0;r=k[q>>2]|0;s=c+4|0;t=k[s>>2]|0;u=b+8|0;v=k[u>>2]|0;lf(a,t+r|0,v);if((v|0)<=0)return;j=(r|0)>0;l=a+4|0;m=a+8|0;n=(t|0)>0;o=c+8|0;i=0;a:while(1){if(j){e=k[q>>2]|0;f=aa(e,i)|0;d=0;do{if((e|0)<=(d|0)){d=18;break a}if((k[u>>2]|0)<=(i|0)){d=18;break a}g=k[l>>2]|0;if((g|0)<=(d|0)){d=19;break a}if((k[m>>2]|0)<=(i|0)){d=19;break a}h=(k[a>>2]|0)+((aa(g,i)|0)+d<<3)|0;p[h>>3]=+p[(k[b>>2]|0)+(f+d<<3)>>3];d=d+1|0}while((d|0)<(r|0))}if(n){e=k[s>>2]|0;f=aa(e,i)|0;d=0;do{if((e|0)<=(d|0)){d=21;break a}if((k[o>>2]|0)<=(i|0)){d=21;break a}g=d+r|0;if((g|0)<=-1){d=22;break a}h=k[l>>2]|0;if((h|0)<=(g|0)){d=22;break a}if((k[m>>2]|0)<=(i|0)){d=22;break a}h=(k[a>>2]|0)+((aa(h,i)|0)+g<<3)|0;p[h>>3]=+p[(k[c>>2]|0)+(f+d<<3)>>3];d=d+1|0}while((d|0)<(t|0))}i=i+1|0;if((i|0)>=(v|0)){d=23;break}}if((d|0)==18)Oa(15640,15693,365,29764);else if((d|0)==19)Oa(15640,15693,365,29764);else if((d|0)==21)Oa(15640,15693,365,29764);else if((d|0)==22)Oa(15640,15693,365,29764);else if((d|0)==23)return}function Md(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,j=0,l=0;j=u;u=u+16|0;h=j;i=a+4|0;e=k[i>>2]|0;f=a+20|0;l=k[f>>2]|0;g=l<<1;if((e-(k[a>>2]|0)>>4|0)==(l|0)){k[f>>2]=g;ng(a,g);e=k[i>>2]|0}k[h>>2]=b;k[h+4>>2]=c;p[h+8>>3]=+p[d>>3];if(e>>>0<(k[a+8>>2]|0)>>>0){k[e>>2]=k[h>>2];k[e+4>>2]=k[h+4>>2];k[e+8>>2]=k[h+8>>2];k[e+12>>2]=k[h+12>>2];k[i>>2]=(k[i>>2]|0)+16;u=j;return}else{og(a,h);u=j;return}}function Nd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+48|0;e=f;i[e>>0]=0;d=e+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[e+8>>2]=b;k[e+28>>2]=0;b=Oq((c<<2)+4|0)|0;k[e+12>>2]=b;if(!b){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d>>2]=c;iF(b|0,0,(c<<2)+4|0)|0;Pg(e);Qg(a,e);Pq(k[e+12>>2]|0);Pq(k[e+16>>2]|0);b=k[e+20>>2]|0;if(b|0)FA(b);b=k[e+24>>2]|0;if(!b){u=f;return}FA(b);u=f;return}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+48|0;r=w;t=w+16|0;s=b+4|0;c=k[s>>2]|0;k[t>>2]=0;v=t+4|0;k[v>>2]=0;k[t+8>>2]=0;k[t+12>>2]=c;k[t+16>>2]=c;o=t+20|0;k[o>>2]=c;q=t+8|0;a:do if(c|0){if(c>>>0>268435455){w=Kb(4)|0;cF(w);Cc(w|0,2032,79)}j=CA(c<<4)|0;l=j;k[t>>2]=l;k[v>>2]=l;k[q>>2]=j+(c<<4);j=b+8|0;l=r+4|0;m=r+8|0;i=0;while(1){if((k[j>>2]|0)<=0){c=7;break}n=+p[(k[b>>2]|0)+(i<<3)>>3];c=k[v>>2]|0;f=k[t>>2]|0;g=c-f|0;d=g>>4;e=k[o>>2]|0;h=e<<1;if((d|0)==(e|0)?(k[o>>2]=h,(k[q>>2]|0)-f>>4>>>0>>0):0){if(h>>>0>268435455){c=11;break}e=CA(g<<1)|0;c=e+(d<<4)|0;d=c+(0-d<<4)|0;if((g|0)>0)nF(d|0,f|0,g|0)|0;k[t>>2]=d;k[v>>2]=c;k[q>>2]=e+(h<<4);if(f){EA(f);c=k[v>>2]|0}}k[r>>2]=i;k[l>>2]=i;p[m>>3]=n;if(c>>>0<(k[q>>2]|0)>>>0){k[c>>2]=k[r>>2];k[c+4>>2]=k[r+4>>2];k[c+8>>2]=k[r+8>>2];k[c+12>>2]=k[r+12>>2];k[v>>2]=(k[v>>2]|0)+16}else og(t,r);i=i+1|0;if((i|0)>=(k[s>>2]|0))break a}if((c|0)==7)Oa(15640,15693,118,29764);else if((c|0)==11){w=Kb(4)|0;cF(w);Cc(w|0,2032,79)}}while(0);Jg(a,t);c=k[t>>2]|0;if(!c){u=w;return}d=k[v>>2]|0;if((d|0)!=(c|0))k[v>>2]=d+(~((d+-16-c|0)>>>4)<<4);EA(c);u=w;return}function Pd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=u;u=u+48|0;c=d+8|0;e=d;i[e>>0]=0;k[e+4>>2]=b+664;i[c>>0]=0;b=c+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Vg(c,e)|0;Qg(a,c);Pq(k[c+12>>2]|0);Pq(k[c+16>>2]|0);a=k[c+20>>2]|0;if(a|0)FA(a);a=k[c+24>>2]|0;if(!a){u=d;return}FA(a);u=d;return}function Qd(a){a=a|0;return k[a+672>>2]|0}function Rd(a){a=a|0;return k[a+668>>2]|0}function Sd(a){a=a|0;var b=0,c=0,d=0;a=a+664|0;d=k[a+16>>2]|0;if(!d){d=k[a+12>>2]|0;d=(k[d+(k[a+4>>2]<<2)>>2]|0)-(k[d>>2]|0)|0;return d|0}c=k[a+4>>2]|0;if(!c){d=0;return d|0}if((c|0)<=-1)Oa(14697,13988,163,14058);a=k[d>>2]|0;if((c|0)==1){d=a;return d|0}else b=1;do{a=(k[d+(b<<2)>>2]|0)+a|0;b=b+1|0}while((b|0)<(c|0));return a|0}function Td(a){a=a|0;var b=0.0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0;a=a+664|0;if((k[a+8>>2]|0)<=0)Oa(16822,16887,19,11478);g=k[a+4>>2]|0;if((g|0)<=0)Oa(16822,16887,19,11478);h=k[a+20>>2]|0;f=k[a+12>>2]|0;e=k[a+16>>2]|0;if(e|0){d=0;b=0.0;do{a=k[f+(d<<2)>>2]|0;i=k[e+(d<<2)>>2]|0;c=i+a|0;if((i|0)>0)do{j=+p[h+(a<<3)>>3];b=b+j*j;a=a+1|0}while((a|0)<(c|0));d=d+1|0}while((d|0)!=(g|0));j=+Q(+b);return +j}c=0;b=0.0;d=k[f>>2]|0;do{c=c+1|0;a=d;d=k[f+(c<<2)>>2]|0;if((a|0)<(d|0))do{j=+p[h+(a<<3)>>3];b=b+j*j;a=a+1|0}while((a|0)!=(d|0))}while((c|0)!=(g|0));j=+Q(+b);return +j}function Ud(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 g=0,h=0,j=0,l=0;l=u;u=u+64|0;j=l+24|0;h=l;g=b+664|0;d=d-c|0;b=f-e|0;i[h>>0]=0;k[h+4>>2]=g;k[h+8>>2]=c;k[h+12>>2]=e;k[h+16>>2]=d;k[h+20>>2]=b;if((d|c|0)<=-1)Oa(14177,13744,147,13812);if(!((b|e|0)>-1?((k[g+8>>2]|0)-d|0)>=(c|0):0))Oa(14177,13744,147,13812);if(((k[g+4>>2]|0)-b|0)<(e|0))Oa(14177,13744,147,13812);i[j>>0]=0;b=j+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Zg(j,h);Qg(a,j);Pq(k[j+12>>2]|0);Pq(k[j+16>>2]|0);b=k[j+20>>2]|0;if(b|0)FA(b);b=k[j+24>>2]|0;if(!b){u=l;return}FA(b);u=l;return}function Vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=u;u=u+16|0;c=g+12|0;d=g;e=b+664|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;f=k[b+672>>2]|0;b=k[b+668>>2]|0;if(!((f|0)==0|(b|0)==0)?(2147483647/(b|0)|0|0)<(f|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}mf(d,f,b);$g(d,e,c);pf(a,d);b=k[d>>2]|0;if(!b){u=g;return}Pq(k[b+-4>>2]|0);u=g;return}function Wd(a){a=a|0;return a|0}function Xd(a){a=a|0;return a+128|0}function Yd(a){a=a|0;return a+448|0}function Zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;c=a+664|0;g=k[c+4>>2]|0;a:do if((g|0)>0){h=k[c+20>>2]|0;j=k[c+12>>2]|0;e=k[c+16>>2]|0;if(e|0){d=0;while(1){c=k[j+(d<<2)>>2]|0;l=k[e+(d<<2)>>2]|0;f=l+c|0;if((l|0)>0)do{l=h+(c<<3)|0;p[l>>3]=+p[b>>3]*+p[l>>3];c=c+1|0}while((c|0)<(f|0));d=d+1|0;if((d|0)==(g|0))break a}}d=0;e=k[j>>2]|0;do{d=d+1|0;c=e;e=k[j+(d<<2)>>2]|0;if((c|0)<(e|0))do{l=h+(c<<3)|0;p[l>>3]=+p[b>>3]*+p[l>>3];c=c+1|0}while((c|0)!=(e|0))}while((d|0)!=(g|0))}while(0);i[a+121>>0]=0;i[a+441>>0]=0;i[a+657>>0]=0;return}function _d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;b=b+664|0;c=a+664|0;i[d>>0]=0;k[d+4>>2]=c;k[d+8>>2]=b;if((k[c+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[c+4>>2]|0)==(k[b+4>>2]|0)){fh(c,d)|0;i[a+120>>0]=0;i[a+121>>0]=0;i[a+440>>0]=0;i[a+441>>0]=0;i[a+656>>0]=0;i[a+657>>0]=0;u=e;return}else Oa(14550,14607,110,14683)}function $d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;b=b+664|0;c=a+664|0;i[d>>0]=0;k[d+4>>2]=c;k[d+8>>2]=b;if((k[c+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[c+4>>2]|0)==(k[b+4>>2]|0)){ih(c,d)|0;i[a+120>>0]=0;i[a+121>>0]=0;i[a+440>>0]=0;i[a+441>>0]=0;i[a+656>>0]=0;i[a+657>>0]=0;u=e;return}else Oa(14550,14607,110,14683)}function ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0.0;h=u;u=u+80|0;g=h+32|0;f=h;b=b+664|0;d=k[b+8>>2]|0;e=k[b+4>>2]|0;if((e|d|0)<=-1)Oa(11919,12068,74,12145);j=+p[c>>3];i[f>>0]=0;k[f+4>>2]=b;b=f+8|0;k[b>>2]=d;k[b+4>>2]=e;p[f+16>>3]=j;i[g>>0]=0;b=g+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;kh(g,f);Qg(a,g);Pq(k[g+12>>2]|0);Pq(k[g+16>>2]|0);b=k[g+20>>2]|0;if(b|0)FA(b);b=k[g+24>>2]|0;if(!b){u=h;return}FA(b);u=h;return}function be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+48|0;e=f+12|0;d=f;b=b+664|0;c=c+664|0;i[d>>0]=0;k[d+4>>2]=b;k[d+8>>2]=c;if((k[b+4>>2]|0)!=(k[c+8>>2]|0))Oa(14710,14850,97,14920);i[e>>0]=0;c=e+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;k[c+28>>2]=0;mh(e,d);Qg(a,e);Pq(k[e+12>>2]|0);Pq(k[e+16>>2]|0);a=k[e+20>>2]|0;if(a|0)FA(a);a=k[e+24>>2]|0;if(!a){u=f;return}FA(a);u=f;return}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+64|0;f=g+16|0;e=g;d=b+664|0;b=c+664|0;i[e>>0]=0;k[e+4>>2]=d;k[e+8>>2]=b;if((k[d+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[d+4>>2]|0)!=(k[b+4>>2]|0))Oa(14550,14607,110,14683);i[f>>0]=0;b=f+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;gh(f,e);Qg(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(!b){u=g;return}FA(b);u=g;return}function de(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+64|0;f=g+16|0;e=g;d=b+664|0;b=c+664|0;i[e>>0]=0;k[e+4>>2]=d;k[e+8>>2]=b;if((k[d+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[d+4>>2]|0)!=(k[b+4>>2]|0))Oa(14550,14607,110,14683);i[f>>0]=0;b=f+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;jh(f,e);Qg(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(!b){u=g;return}FA(b);u=g;return}function ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;b=b+664|0;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);sh(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;zh(b);b=b+8|0;if(!(i[b>>0]|0))Oa(17938,17986,90,11715);if((k[b+20>>2]|0)!=(k[c+4>>2]|0))Oa(18071,17986,91,11715);k[e>>2]=b;k[e+4>>2]=c;Ph(d,e);pf(a,d);b=k[d>>2]|0;if(!b){u=f;return}Pq(k[b+-4>>2]|0);u=f;return}function ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;$h(b);b=b+8|0;if(!(i[b>>0]|0))Oa(17938,17986,90,11715);if((k[b+32>>2]|0)!=(k[c+4>>2]|0))Oa(18071,17986,91,11715);k[e>>2]=b;k[e+4>>2]=c;fj(d,e);pf(a,d);b=k[d>>2]|0;if(!b){u=f;return}Pq(k[b+-4>>2]|0);u=f;return}function he(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+32|0;d=g+8|0;e=g;yj(b);f=b+8|0;if(!(i[f>>0]|0))Oa(20840,20281,235,11715);if((k[b+36>>2]|0)!=(k[c+4>>2]|0))Oa(20917,20281,236,11715);k[e>>2]=f;k[e+4>>2]=c;Lj(d,e);pf(a,d);a=k[d>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function ie(a){a=a|0;return +(+p[a>>3])}function je(a){a=a|0;return +(+p[a+8>>3])}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((c|b|0)<=-1)Oa(11919,12068,74,12145);ek(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+48|0;d=f+24|0;e=f;k[e>>2]=b;k[e+4>>2]=c;p[e+8>>3]=1.0;p[e+16>>3]=0.0;if((c|b|0)<=-1)Oa(11919,12068,74,12145);hk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function me(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;g=u;u=u+48|0;e=g+24|0;f=g;k[f>>2]=b;k[f+4>>2]=c;h=f+8|0;k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];if((c|b|0)<=-1)Oa(11919,12068,74,12145);hk(e,f);dk(a,e);a=k[e>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((c|b|0)<=-1)Oa(11919,12068,74,12145);jk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function oe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;l=n;k[l>>2]=0;h=l+4|0;k[h>>2]=0;i=l+8|0;k[i>>2]=0;f=b+8|0;c=k[f>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}ak(l,c,d);c=k[l>>2]|0;j=k[b>>2]|0;if((c|0)!=0&(j|0)==(c|0))Oa(12797,13072,378,13144);g=k[e>>2]|0;f=k[f>>2]|0;do if(!((k[h>>2]|0)==(f|0)?(k[i>>2]|0)==(g|0):0)){ak(l,f,g);if((k[h>>2]|0)==(f|0)?(k[i>>2]|0)==(g|0):0){m=k[l>>2]|0;break}else Oa(12160,12207,721,12285)}else m=c;while(0);if((g|0)>0){b=(f|0)>0;c=0;do{if(b){e=aa(c,f)|0;d=0;do{vF(m+(d+e<<4)|0,j+((aa(d,g)|0)+c<<4)|0,16)|0;d=d+1|0}while((d|0)<(f|0))}c=c+1|0}while((c|0)<(g|0))}dk(a,l);c=k[l>>2]|0;if(!c){u=n;return}Pq(k[c+-4>>2]|0);u=n;return}function pe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+32|0;d=c+8|0;e=c;k[e>>2]=b;lk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=c;return}Pq(k[a+-4>>2]|0);u=c;return}function qe(a){a=a|0;return k[a+4>>2]|0}function re(a){a=a|0;return k[a+8>>2]|0}function se(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0.0;if(!b){f=k[a+4>>2]|0;g=k[a+8>>2]|0;if(!(aa(g,f)|0)){c=0.0;return +c}if(!((f|0)>0&(g|0)>0))Oa(13148,13216,413,13284);e=k[a>>2]|0;c=+Qo(+p[e>>3],+p[e+8>>3]);if((f|0)>1){b=1;do{h=+Qo(+p[e+(b<<4)>>3],+p[e+(b<<4)+8>>3]);c=c1)a=1;else{h=c;return +h}do{d=aa(a,f)|0;b=0;do{i=b+d|0;h=+Qo(+p[e+(i<<4)>>3],+p[e+(i<<4)+8>>3]);c=c>2]|0;g=k[a+8>>2]|0;d=(aa(g,f)|0)==0;if((b|0)!=1){if(!d){if(!((f|0)>0&(g|0)>0))Oa(13148,13216,413,13284);e=k[a>>2]|0;h=+p[e>>3];c=+p[e+8>>3];c=h*h+c*c;if((f|0)>1){b=1;do{j=+p[e+(b<<4)>>3];h=+p[e+(b<<4)+8>>3];c=c+(j*j+h*h);b=b+1|0}while((b|0)!=(f|0))}if((g|0)>1){a=1;do{d=aa(a,f)|0;b=0;do{i=b+d|0;h=+p[e+(i<<4)>>3];j=+p[e+(i<<4)+8>>3];c=c+(h*h+j*j);b=b+1|0}while((b|0)<(f|0));a=a+1|0}while((a|0)!=(g|0))}}else c=0.0;j=+Q(+c);return +j}if(d){j=0.0;return +j}if(!((f|0)>0&(g|0)>0))Oa(13148,13216,413,13284);e=k[a>>2]|0;c=+Qo(+p[e>>3],+p[e+8>>3]);if((f|0)>1){b=1;do{c=c+ +Qo(+p[e+(b<<4)>>3],+p[e+(b<<4)+8>>3]);b=b+1|0}while((b|0)!=(f|0))}if((g|0)>1)a=1;else{j=c;return +j}do{d=aa(a,f)|0;b=0;do{i=b+d|0;c=c+ +Qo(+p[e+(i<<4)>>3],+p[e+(i<<4)+8>>3]);b=b+1|0}while((b|0)<(f|0));a=a+1|0}while((a|0)!=(g|0));return +c}function te(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0,g=0,h=0,j=0,l=0;j=u;u=u+96|0;h=j;ok(h,a);a=i[h+60>>0]|0;if(!(a<<24>>24))Oa(15154,13497,258,11473);d=+P(+(+p[h+72>>3]));c=i[h+61>>0]|0;if(!((c|a)<<24>>24))Oa(15215,13497,380,15259);if(!(c<<24>>24)){g=k[h+4>>2]|0;f=k[h+8>>2]|0;b=+(((f|0)<(g|0)?f:g)|0)*2.220446049250313e-16}else b=+p[h+64>>3];b=d*b;e=k[h+80>>2]|0;if((e|0)>0){f=k[h>>2]|0;g=k[h+4>>2]|0;a=0;c=0;do{l=(aa(c,g)|0)+c|0;a=(+Qo(+p[f+(l<<4)>>3],+p[f+(l<<4)+8>>3])>b&1)+a|0;c=c+1|0}while((c|0)!=(e|0));b=+(a|0)}else b=0.0;a=k[h+52>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+44>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+36>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+28>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+20>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h+12>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[h>>2]|0;if(!a){u=j;return +b}Pq(k[a+-4>>2]|0);u=j;return +b}function ue(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;i=k[b+4>>2]|0;j=k[b+8>>2]|0;if(!(aa(j,i)|0)){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}if(!((i|0)>0&(j|0)>0))Oa(13148,13216,413,13284);g=k[b>>2]|0;h=a+8|0;k[a>>2]=k[g>>2];k[a+4>>2]=k[g+4>>2];k[a+8>>2]=k[g+8>>2];k[a+12>>2]=k[g+12>>2];if((i|0)>1){b=1;c=+p[a>>3];d=+p[h>>3];do{c=c+ +p[g+(b<<4)>>3];d=d+ +p[g+(b<<4)+8>>3];b=b+1|0}while((b|0)!=(i|0));p[a>>3]=c;p[h>>3]=d}if((j|0)<=1)return;b=1;c=+p[a>>3];d=+p[h>>3];do{f=aa(b,i)|0;e=0;do{l=e+f|0;c=c+ +p[g+(l<<4)>>3];d=d+ +p[g+(l<<4)+8>>3];e=e+1|0}while((e|0)<(i|0));b=b+1|0}while((b|0)<(j|0));p[a>>3]=c;p[h>>3]=d;return}function ve(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 g=0,h=0,i=0,j=0,l=0;j=u;u=u+48|0;h=j+28|0;i=j;g=d-c|0;f=f-e|0;d=k[b+4>>2]|0;l=(k[b>>2]|0)+(c<<4)+((aa(d,e)|0)<<4)|0;k[i>>2]=l;k[i+4>>2]=g;k[i+8>>2]=f;if(!((f|g|0)>-1|(l|0)==0))Oa(13818,13988,175,14058);k[i+12>>2]=b;k[i+16>>2]=c;k[i+20>>2]=e;k[i+24>>2]=d;if((g|c|0)<=-1)Oa(14177,13744,147,13812);if(!((f|e|0)>-1&(d-g|0)>=(c|0)))Oa(14177,13744,147,13812);if(((k[b+8>>2]|0)-f|0)<(e|0))Oa(14177,13744,147,13812);Bk(h,i);dk(a,h);d=k[h>>2]|0;if(!d){u=j;return}Pq(k[d+-4>>2]|0);u=j;return}function we(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0.0,h=0,i=0,j=0;j=u;u=u+32|0;h=j+16|0;i=j;c=k[a+4>>2]|0;d=k[a+8>>2]|0;g=+p[b>>3];f=+p[b+8>>3];if((d|c|0)<=-1)Oa(11919,12068,74,12145);e=k[a>>2]|0;a=aa(d,c)|0;if((a|0)<=0){u=j;return}c=i+8|0;b=0;do{d=e+(b<<4)|0;p[i>>3]=g;p[c>>3]=f;uk(h,d,i);k[d>>2]=k[h>>2];k[d+4>>2]=k[h+4>>2];k[d+8>>2]=k[h+8>>2];k[d+12>>2]=k[h+12>>2];b=b+1|0}while((b|0)!=(a|0));u=j;return}function xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=k[b>>2]|0;d=k[a+4>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(14392,12207,710,12285);e=k[a+8>>2]|0;if((e|0)!=(k[b+8>>2]|0))Oa(14392,12207,710,12285);c=k[a>>2]|0;b=aa(e,d)|0;if((b|0)>0)a=0;else return;do{e=c+(a<<4)|0;p[e>>3]=+p[f+(a<<4)>>3]+ +p[e>>3];e=c+(a<<4)+8|0;p[e>>3]=+p[f+(a<<4)+8>>3]+ +p[e>>3];a=a+1|0}while((a|0)!=(b|0));return}function ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=k[b>>2]|0;d=k[a+4>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(14392,12207,710,12285);e=k[a+8>>2]|0;if((e|0)!=(k[b+8>>2]|0))Oa(14392,12207,710,12285);c=k[a>>2]|0;b=aa(e,d)|0;if((b|0)>0)a=0;else return;do{e=c+(a<<4)|0;p[e>>3]=+p[e>>3]-+p[f+(a<<4)>>3];e=c+(a<<4)+8|0;p[e>>3]=+p[e>>3]-+p[f+(a<<4)+8>>3];a=a+1|0}while((a|0)!=(b|0));return}function ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+80|0;d=i+40|0;e=i+56|0;f=i;g=k[b+4>>2]|0;h=k[b+8>>2]|0;k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];k[d+12>>2]=k[c+12>>2];if((h|g|0)<=-1)Oa(11919,12068,74,12145);k[f>>2]=b;c=f+8|0;k[c>>2]=g;k[c+4>>2]=h;h=f+16|0;k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];Fk(e,f);dk(a,e);d=k[e>>2]|0;if(!d){u=i;return}Pq(k[d+-4>>2]|0);u=i;return}function Ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+8>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);Hk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function Be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14550,14607,110,14683);if((k[b+8>>2]|0)!=(k[c+8>>2]|0))Oa(14550,14607,110,14683);Sk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+12|0;e=f;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14550,14607,110,14683);if((k[b+8>>2]|0)!=(k[c+8>>2]|0))Oa(14550,14607,110,14683);Tk(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function De(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=u;u=u+64|0;c=g+40|0;d=g;e=k[b+4>>2]|0;f=k[b+8>>2]|0;if((f|e|0)<=-1)Oa(11919,12068,74,12145);k[d>>2]=b;b=d+8|0;k[b>>2]=e;k[b+4>>2]=f;p[d+16>>3]=-1.0;p[d+24>>3]=0.0;Fk(c,d);dk(a,c);a=k[c>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(((c|0)>-1?(e=k[b+4>>2]|0,(d|0)>-1&(e|0)>(c|0)):0)?(k[b+8>>2]|0)>(d|0):0){e=(k[b>>2]|0)+((aa(e,d)|0)+c<<4)|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];return}Oa(15640,15693,118,29764)}function Fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(((b|0)>-1?(e=k[a+4>>2]|0,(c|0)>-1&(e|0)>(b|0)):0)?(k[a+8>>2]|0)>(c|0):0){e=(k[a>>2]|0)+((aa(e,c)|0)+b<<4)|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[e+12>>2]=k[d+12>>2];return}Oa(15640,15693,365,29764)}function Ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=b+4|0;p=k[o>>2]|0;q=b+8|0;r=k[q>>2]|0;s=c+8|0;t=k[s>>2]|0;$j(a,p,t+r|0);if((p|0)<=0)return;j=a+4|0;l=a+8|0;m=(t|0)>0;n=c+4|0;if((r|0)<=0){g=0;a:while(1){if(m){h=0;do{d=k[n>>2]|0;if((d|0)<=(g|0)){d=22;break a}if((k[s>>2]|0)<=(h|0)){d=22;break a}d=(k[c>>2]|0)+((aa(d,h)|0)+g<<4)|0;e=h+r|0;f=k[j>>2]|0;if(!((e|0)>-1&(f|0)>(g|0))){d=25;break a}if((k[l>>2]|0)<=(e|0)){d=25;break a}f=(k[a>>2]|0)+((aa(f,e)|0)+g<<4)|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[f+12>>2]=k[d+12>>2];h=h+1|0}while((h|0)<(t|0))}g=g+1|0;if((g|0)>=(p|0)){d=27;break}}if((d|0)==22)Oa(15640,15693,365,29764);else if((d|0)==25)Oa(15640,15693,365,29764);else if((d|0)==27)return}else i=0;b:while(1){f=0;do{d=k[o>>2]|0;if((d|0)<=(i|0)){d=17;break b}if((k[q>>2]|0)<=(f|0)){d=17;break b}d=(k[b>>2]|0)+((aa(d,f)|0)+i<<4)|0;e=k[j>>2]|0;if((e|0)<=(i|0)){d=18;break b}if((k[l>>2]|0)<=(f|0)){d=18;break b}h=(k[a>>2]|0)+((aa(e,f)|0)+i<<4)|0;k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];f=f+1|0}while((f|0)<(r|0));if(m){g=0;do{d=k[n>>2]|0;if((d|0)<=(i|0)){d=22;break b}if((k[s>>2]|0)<=(g|0)){d=22;break b}d=(k[c>>2]|0)+((aa(d,g)|0)+i<<4)|0;e=g+r|0;f=k[j>>2]|0;if(!((e|0)>-1&(f|0)>(i|0))){d=25;break b}if((k[l>>2]|0)<=(e|0)){d=25;break b}h=(k[a>>2]|0)+((aa(f,e)|0)+i<<4)|0;k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];g=g+1|0}while((g|0)<(t|0))}i=i+1|0;if((i|0)>=(p|0)){d=27;break}}if((d|0)==17)Oa(15640,15693,365,29764);else if((d|0)==18)Oa(15640,15693,365,29764);else if((d|0)==22)Oa(15640,15693,365,29764);else if((d|0)==25)Oa(15640,15693,365,29764);else if((d|0)==27)return}function He(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=b+4|0;p=k[o>>2]|0;q=c+4|0;r=k[q>>2]|0;s=b+8|0;t=k[s>>2]|0;$j(a,r+p|0,t);if((t|0)<=0)return;i=(p|0)>0;j=a+4|0;l=a+8|0;m=(r|0)>0;n=c+8|0;h=0;a:while(1){if(i){f=0;do{d=k[o>>2]|0;if((d|0)<=(f|0)){d=16;break a}if((k[s>>2]|0)<=(h|0)){d=16;break a}d=(k[b>>2]|0)+((aa(d,h)|0)+f<<4)|0;e=k[j>>2]|0;if((e|0)<=(f|0)){d=17;break a}if((k[l>>2]|0)<=(h|0)){d=17;break a}g=(k[a>>2]|0)+((aa(e,h)|0)+f<<4)|0;k[g>>2]=k[d>>2];k[g+4>>2]=k[d+4>>2];k[g+8>>2]=k[d+8>>2];k[g+12>>2]=k[d+12>>2];f=f+1|0}while((f|0)<(p|0))}if(m){g=0;do{d=k[q>>2]|0;if((d|0)<=(g|0)){d=19;break a}if((k[n>>2]|0)<=(h|0)){d=19;break a}d=(k[c>>2]|0)+((aa(d,h)|0)+g<<4)|0;e=g+p|0;if((e|0)<=-1){d=20;break a}f=k[j>>2]|0;if((f|0)<=(e|0)){d=20;break a}if((k[l>>2]|0)<=(h|0)){d=20;break a}f=(k[a>>2]|0)+((aa(f,h)|0)+e<<4)|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[f+12>>2]=k[d+12>>2];g=g+1|0}while((g|0)<(r|0))}h=h+1|0;if((h|0)>=(t|0)){d=21;break}}if((d|0)==16)Oa(15640,15693,365,29764);else if((d|0)==17)Oa(15640,15693,365,29764);else if((d|0)==19)Oa(15640,15693,365,29764);else if((d|0)==20)Oa(15640,15693,365,29764);else if((d|0)==21)return}function Ie(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,j=0,l=0;j=u;u=u+32|0;h=j;i=a+4|0;e=k[i>>2]|0;f=a+20|0;l=k[f>>2]|0;g=l<<1;if(((e-(k[a>>2]|0)|0)/24|0|0)==(l|0)){k[f>>2]=g;$k(a,g);e=k[i>>2]|0}k[h>>2]=b;k[h+4>>2]=c;l=h+8|0;k[l>>2]=k[d>>2];k[l+4>>2]=k[d+4>>2];k[l+8>>2]=k[d+8>>2];k[l+12>>2]=k[d+12>>2];if(e>>>0<(k[a+8>>2]|0)>>>0){k[e>>2]=k[h>>2];k[e+4>>2]=k[h+4>>2];k[e+8>>2]=k[h+8>>2];k[e+12>>2]=k[h+12>>2];k[e+16>>2]=k[h+16>>2];k[e+20>>2]=k[h+20>>2];k[i>>2]=(k[i>>2]|0)+24;u=j;return}else{al(a,h);u=j;return}}function Je(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+48|0;e=f;i[e>>0]=0;d=e+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[e+8>>2]=b;k[e+28>>2]=0;b=Oq((c<<2)+4|0)|0;k[e+12>>2]=b;if(!b){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d>>2]=c;iF(b|0,0,(c<<2)+4|0)|0;Al(e);Bl(a,e);Pq(k[e+12>>2]|0);Pq(k[e+16>>2]|0);b=k[e+20>>2]|0;if(b|0)FA(b);b=k[e+24>>2]|0;if(!b){u=f;return}FA(b);u=f;return}function Ke(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;m=v+16|0;s=v+40|0;q=v;r=b+4|0;c=k[r>>2]|0;k[s>>2]=0;t=s+4|0;k[t>>2]=0;k[s+8>>2]=0;k[s+12>>2]=c;k[s+16>>2]=c;j=s+20|0;k[j>>2]=c;l=s+8|0;a:do if(c|0){if(c>>>0>178956970){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}n=CA(c*24|0)|0;o=n;k[s>>2]=o;k[t>>2]=o;k[l>>2]=n+(c*24|0);n=b+8|0;o=m+4|0;p=m+8|0;i=0;while(1){if(!((c|0)>(i|0)&(k[n>>2]|0)>0)){c=7;break}c=(k[b>>2]|0)+(i<<4)|0;k[q>>2]=k[c>>2];k[q+4>>2]=k[c+4>>2];k[q+8>>2]=k[c+8>>2];k[q+12>>2]=k[c+12>>2];c=k[t>>2]|0;f=k[s>>2]|0;g=c-f|0;d=(g|0)/24|0;e=k[j>>2]|0;h=e<<1;if((d|0)==(e|0)?(k[j>>2]=h,(((k[l>>2]|0)-f|0)/24|0)>>>0>>0):0){if(h>>>0>178956970){c=11;break}e=CA(d*48|0)|0;c=e+(d*24|0)|0;d=c+(((g|0)/-24|0)*24|0)|0;if((g|0)>0)nF(d|0,f|0,g|0)|0;k[s>>2]=d;k[t>>2]=c;k[l>>2]=e+(h*24|0);if(f){EA(f);c=k[t>>2]|0}}k[m>>2]=i;k[o>>2]=i;k[p>>2]=k[q>>2];k[p+4>>2]=k[q+4>>2];k[p+8>>2]=k[q+8>>2];k[p+12>>2]=k[q+12>>2];if(c>>>0<(k[l>>2]|0)>>>0){k[c>>2]=k[m>>2];k[c+4>>2]=k[m+4>>2];k[c+8>>2]=k[m+8>>2];k[c+12>>2]=k[m+12>>2];k[c+16>>2]=k[m+16>>2];k[c+20>>2]=k[m+20>>2];k[t>>2]=(k[t>>2]|0)+24}else al(s,m);i=i+1|0;c=k[r>>2]|0;if((i|0)>=(c|0))break a}if((c|0)==7)Oa(15640,15693,118,29764);else if((c|0)==11){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}}while(0);vl(a,s);c=k[s>>2]|0;if(!c){u=v;return}d=k[t>>2]|0;if((d|0)!=(c|0))k[t>>2]=d+(~(((d+-24-c|0)>>>0)/24|0)*24|0);EA(c);u=v;return}function Le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=u;u=u+48|0;c=d+8|0;e=d;i[e>>0]=0;k[e+4>>2]=b+664;i[c>>0]=0;b=c+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Fl(c,e)|0;Bl(a,c);Pq(k[c+12>>2]|0);Pq(k[c+16>>2]|0);a=k[c+20>>2]|0;if(a|0)FA(a);a=k[c+24>>2]|0;if(!a){u=d;return}FA(a);u=d;return}function Me(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=u;u=u+48|0;c=d+12|0;e=d;i[e>>0]=0;k[e+4>>2]=b+664;i[c>>0]=0;b=c+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Hl(c,e);Bl(a,c);Pq(k[c+12>>2]|0);Pq(k[c+16>>2]|0);a=k[c+20>>2]|0;if(a|0)FA(a);a=k[c+24>>2]|0;if(!a){u=d;return}FA(a);u=d;return}function Ne(a){a=a|0;return k[a+672>>2]|0}function Oe(a){a=a|0;return k[a+668>>2]|0}function Pe(a){a=a|0;var b=0,c=0,d=0;a=a+664|0;d=k[a+16>>2]|0;if(!d){d=k[a+12>>2]|0;d=(k[d+(k[a+4>>2]<<2)>>2]|0)-(k[d>>2]|0)|0;return d|0}c=k[a+4>>2]|0;if(!c){d=0;return d|0}if((c|0)<=-1)Oa(14697,13988,163,14058);a=k[d>>2]|0;if((c|0)==1){d=a;return d|0}else b=1;do{a=(k[d+(b<<2)>>2]|0)+a|0;b=b+1|0}while((b|0)<(c|0));return a|0}function Qe(a){a=a|0;var b=0.0,c=0,d=0;c=u;u=u+16|0;d=c;i[d>>0]=0;k[d+4>>2]=a+664;b=+Q(+(+Jl(d)));u=c;return +b}function Re(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 g=0,h=0,j=0,l=0;l=u;u=u+64|0;j=l+24|0;h=l;g=b+664|0;d=d-c|0;b=f-e|0;i[h>>0]=0;k[h+4>>2]=g;k[h+8>>2]=c;k[h+12>>2]=e;k[h+16>>2]=d;k[h+20>>2]=b;if((d|c|0)<=-1)Oa(14177,13744,147,13812);if(!((b|e|0)>-1?((k[g+8>>2]|0)-d|0)>=(c|0):0))Oa(14177,13744,147,13812);if(((k[g+4>>2]|0)-b|0)<(e|0))Oa(14177,13744,147,13812);i[j>>0]=0;b=j+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Ll(j,h);Bl(a,j);Pq(k[j+12>>2]|0);Pq(k[j+16>>2]|0);b=k[j+20>>2]|0;if(b|0)FA(b);b=k[j+24>>2]|0;if(!b){u=l;return}FA(b);u=l;return}function Se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=u;u=u+16|0;c=g+12|0;d=g;e=b+664|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;f=k[b+672>>2]|0;b=k[b+668>>2]|0;if(!((f|0)==0|(b|0)==0)?(2147483647/(b|0)|0|0)<(f|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}ak(d,f,b);Nl(d,e,c);dk(a,d);b=k[d>>2]|0;if(!b){u=g;return}Pq(k[b+-4>>2]|0);u=g;return}function Te(a){a=a|0;return a|0}function Ue(a){a=a|0;return a+128|0}function Ve(a){a=a|0;return a+448|0}function We(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+32|0;n=t+16|0;o=t;c=a+664|0;q=c+4|0;d=k[q>>2]|0;if((d|0)<=0){s=a+121|0;i[s>>0]=0;s=a+441|0;i[s>>0]=0;s=a+657|0;i[s>>0]=0;u=t;return}r=c+20|0;s=c+12|0;j=c+16|0;l=b+8|0;m=o+8|0;h=0;c=d;do{g=k[r>>2]|0;d=k[s>>2]|0;f=k[d+(h<<2)>>2]|0;e=k[j>>2]|0;if(!e)d=k[d+(h+1<<2)>>2]|0;else d=(k[e+(h<<2)>>2]|0)+f|0;if((f|0)<(d|0)){c=f;do{f=g+(c<<4)|0;v=+p[l>>3];p[o>>3]=+p[b>>3];p[m>>3]=v;uk(n,f,o);k[f>>2]=k[n>>2];k[f+4>>2]=k[n+4>>2];k[f+8>>2]=k[n+8>>2];k[f+12>>2]=k[n+12>>2];c=c+1|0}while((c|0)!=(d|0));c=k[q>>2]|0}h=h+1|0}while((h|0)<(c|0));s=a+121|0;i[s>>0]=0;s=a+441|0;i[s>>0]=0;s=a+657|0;i[s>>0]=0;u=t;return}function Xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;b=b+664|0;c=a+664|0;i[d>>0]=0;k[d+4>>2]=c;k[d+8>>2]=b;if((k[c+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[c+4>>2]|0)==(k[b+4>>2]|0)){Tl(c,d)|0;i[a+120>>0]=0;i[a+121>>0]=0;i[a+440>>0]=0;i[a+441>>0]=0;i[a+656>>0]=0;i[a+657>>0]=0;u=e;return}else Oa(14550,14607,110,14683)}function Ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;b=b+664|0;c=a+664|0;i[d>>0]=0;k[d+4>>2]=c;k[d+8>>2]=b;if((k[c+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[c+4>>2]|0)==(k[b+4>>2]|0)){Wl(c,d)|0;i[a+120>>0]=0;i[a+121>>0]=0;i[a+440>>0]=0;i[a+441>>0]=0;i[a+656>>0]=0;i[a+657>>0]=0;u=e;return}else Oa(14550,14607,110,14683)}function Ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+96|0;f=j+40|0;h=j+56|0;g=j;b=b+664|0;d=k[b+8>>2]|0;e=k[b+4>>2]|0;k[f>>2]=k[c>>2];k[f+4>>2]=k[c+4>>2];k[f+8>>2]=k[c+8>>2];k[f+12>>2]=k[c+12>>2];if((e|d|0)<=-1)Oa(11919,12068,74,12145);i[g>>0]=0;k[g+4>>2]=b;b=g+8|0;k[b>>2]=d;k[b+4>>2]=e;b=g+16|0;k[b>>2]=k[f>>2];k[b+4>>2]=k[f+4>>2];k[b+8>>2]=k[f+8>>2];k[b+12>>2]=k[f+12>>2];i[h>>0]=0;b=h+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Yl(h,g);Bl(a,h);Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);b=k[h+20>>2]|0;if(b|0)FA(b);b=k[h+24>>2]|0;if(!b){u=j;return}FA(b);u=j;return}function _e(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+48|0;e=f+12|0;d=f;b=b+664|0;c=c+664|0;i[d>>0]=0;k[d+4>>2]=b;k[d+8>>2]=c;if((k[b+4>>2]|0)!=(k[c+8>>2]|0))Oa(14710,14850,97,14920);i[e>>0]=0;c=e+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;k[c+28>>2]=0;_l(e,d);Bl(a,e);Pq(k[e+12>>2]|0);Pq(k[e+16>>2]|0);a=k[e+20>>2]|0;if(a|0)FA(a);a=k[e+24>>2]|0;if(!a){u=f;return}FA(a);u=f;return}function $e(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+64|0;f=g+16|0;e=g;d=b+664|0;b=c+664|0;i[e>>0]=0;k[e+4>>2]=d;k[e+8>>2]=b;if((k[d+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[d+4>>2]|0)!=(k[b+4>>2]|0))Oa(14550,14607,110,14683);i[f>>0]=0;b=f+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Ul(f,e);Bl(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(!b){u=g;return}FA(b);u=g;return}function af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+64|0;f=g+16|0;e=g;d=b+664|0;b=c+664|0;i[e>>0]=0;k[e+4>>2]=d;k[e+8>>2]=b;if((k[d+8>>2]|0)!=(k[b+8>>2]|0))Oa(14550,14607,110,14683);if((k[d+4>>2]|0)!=(k[b+4>>2]|0))Oa(14550,14607,110,14683);i[f>>0]=0;b=f+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Xl(f,e);Bl(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(!b){u=g;return}FA(b);u=g;return}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;b=b+664|0;k[e>>2]=b;k[e+4>>2]=c;if((k[b+4>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);em(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=f;return}Pq(k[a+-4>>2]|0);u=f;return}function cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;lm(b);b=b+8|0;if(!(i[b>>0]|0))Oa(17938,17986,90,11715);if((k[b+20>>2]|0)!=(k[c+4>>2]|0))Oa(18071,17986,91,11715);k[e>>2]=b;k[e+4>>2]=c;Am(d,e);dk(a,d);b=k[d>>2]|0;if(!b){u=f;return}Pq(k[b+-4>>2]|0);u=f;return}function df(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;f=u;u=u+32|0;d=f+8|0;e=f;Nm(b);b=b+8|0;if(!(i[b>>0]|0))Oa(17938,17986,90,11715);if((k[b+32>>2]|0)!=(k[c+4>>2]|0))Oa(18071,17986,91,11715);k[e>>2]=b;k[e+4>>2]=c;Cn(d,e);dk(a,d);b=k[d>>2]|0;if(!b){u=f;return}Pq(k[b+-4>>2]|0);u=f;return}function ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+32|0;d=g+8|0;e=g;Vn(b);f=b+8|0;if(!(i[f>>0]|0))Oa(20840,20281,235,11715);if((k[b+36>>2]|0)!=(k[c+4>>2]|0))Oa(20917,20281,236,11715);k[e>>2]=f;k[e+4>>2]=c;ho(d,e);dk(a,d);a=k[d>>2]|0;if(!a){u=g;return}Pq(k[a+-4>>2]|0);u=g;return}function ff(a){a=a|0;return 8}function gf(a){a=a|0;var b=0;if(!a)return;b=k[a>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);EA(a);return}function hf(a){a=a|0;Ta(a|0)|0;FB()}function jf(a,b){a=a|0;b=b|0;var c=0;c=CA(12)|0;lf(c,k[a>>2]|0,k[b>>2]|0);return c|0}function kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function lf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;d=a+4|0;k[d>>2]=0;e=a+8|0;k[e>>2]=0;if((c|b|0)<=-1)Oa(11919,12068,74,12145);do if(c|b){mf(a,b,c);if((k[d>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[e>>2]|0)==(c|0)){f=k[a>>2]|0;break}else Oa(12160,12207,721,12285)}else f=0;while(0);a=aa(c,b)|0;if((a|0)<=0)return;iF(f|0,0,a<<3|0)|0;return}function mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((c|b|0)<=-1)Oa(12303,12702,285,12780);if(!((b|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(b|0):0){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}d=aa(c,b)|0;g=a+4|0;h=a+8|0;if((aa(k[h>>2]|0,k[g>>2]|0)|0)==(d|0)){k[g>>2]=b;k[h>>2]=c;return}e=k[a>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);do if(d){if(d>>>0>536870911){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}f=d<<3;e=Oq(f+16|0)|0;d=e+16&-16;if(!e)d=0;else k[d+-4>>2]=e;if((f|0)!=0&(d|0)==0){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}else break}else d=0;while(0);k[a>>2]=d;k[g>>2]=b;k[h>>2]=c;return}function nf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=CA(12)|0;f=k[a+4>>2]|0;g=k[a+8>>2]|0;h=aa(g,f)|0;if(!h){k[d>>2]=0;k[d+4>>2]=f;k[d+8>>2]=g;return d|0}if(h>>>0>536870911){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}e=h<<3;c=Oq(e+16|0)|0;b=c+16&-16;if(!c)b=0;else k[b+-4>>2]=c;if((e|0)!=0&(b|0)==0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[d>>2]=b;k[d+4>>2]=f;k[d+8>>2]=g;nF(b|0,k[a>>2]|0,h<<3|0)|0;return d|0}function of(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b+4|0;g=k[f>>2]|0;h=b+8|0;i=k[h>>2]|0;c=aa(i,g)|0;if(c){if(c>>>0>536870911){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}e=c<<3;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}else d=c}else d=0;k[a>>2]=d;k[a+4>>2]=g;k[a+8>>2]=i;c=aa(k[h>>2]|0,k[f>>2]|0)|0;if(!c)return;nF(d|0,k[b>>2]|0,c<<3|0)|0;return}function qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}mf(a,c,d);i=k[b>>2]|0;f=k[e>>2]|0;if(!((k[g>>2]|0)==(i|0)?(k[h>>2]|0)==(f|0):0)){mf(a,i,f);if((k[g>>2]|0)!=(i|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(f|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;if((i|0)>0&(f|0)>0)b=0;else return;do{e=aa(b,i)|0;c=0;do{p[d+(c+e<<3)>>3]=(c|0)==(b|0)?1.0:0.0;c=c+1|0}while((c|0)!=(i|0));b=b+1|0}while((b|0)!=(f|0));return}function rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;cd[a&63](e,b,c);a=sf(e)|0;b=k[e>>2]|0;if(!b){u=d;return a|0}Pq(k[b+-4>>2]|0);u=d;return a|0}function sf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=CA(12)|0;f=k[a+4>>2]|0;g=k[a+8>>2]|0;h=aa(g,f)|0;if(!h){k[d>>2]=0;k[d+4>>2]=f;k[d+8>>2]=g;return d|0}if(h>>>0>536870911){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}e=h<<3;c=Oq(e+16|0)|0;b=c+16&-16;if(!c)b=0;else k[b+-4>>2]=c;if((e|0)!=0&(b|0)==0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[d>>2]=b;k[d+4>>2]=f;k[d+8>>2]=g;nF(b|0,k[a>>2]|0,h<<3|0)|0;return d|0}function tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0;k[a>>2]=0;f=a+4|0;k[f>>2]=0;g=a+8|0;k[g>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}mf(a,c,d);h=+p[b+8>>3];d=k[b>>2]|0;c=k[e>>2]|0;if(!((k[f>>2]|0)==(d|0)?(k[g>>2]|0)==(c|0):0)){mf(a,d,c);if((k[f>>2]|0)!=(d|0))Oa(12160,12207,721,12285);if((k[g>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}b=k[a>>2]|0;d=aa(c,d)|0;if((d|0)>0)c=0;else return;do{p[b+(c<<3)>>3]=h;c=c+1|0}while((c|0)!=(d|0));return}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0;e=u;u=u+32|0;f=e+8|0;g=e;p[g>>3]=d;gd[a&15](f,b,c,g);a=sf(f)|0;b=k[f>>2]|0;if(!b){u=e;return a|0}Pq(k[b+-4>>2]|0);u=e;return a|0}function vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0;k[a>>2]=0;f=a+4|0;k[f>>2]=0;g=a+8|0;k[g>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}mf(a,c,d);c=k[b>>2]|0;b=k[e>>2]|0;if(!((k[f>>2]|0)==(c|0)?(k[g>>2]|0)==(b|0):0)){mf(a,c,b);if((k[f>>2]|0)!=(c|0))Oa(12160,12207,721,12285);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(b,c)|0;if((c|0)>0)b=0;else return;do{h=+(Gq()|0)*2.0/2147483647.0+-1.0;p[d+(b<<3)>>3]=h;b=b+1|0}while((b|0)!=(c|0));return}function wf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=sf(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function xf(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function yf(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0,g=0,h=0.0;a=k[a>>2]|0;if((k[a+4>>2]|0)<=0)Oa(13148,13216,413,13284);if((k[a+8>>2]|0)<=0)Oa(13148,13216,413,13284);g=k[a>>2]|0;f=k[a+4>>2]|0;if((f|0)<=0)Oa(13290,13216,192,13144);e=k[a+8>>2]|0;if((e|0)<=0)Oa(13290,13216,192,13144);c=+P(+(+p[g>>3]));if((f|0)>1){a=1;do{h=+P(+(+p[g+(a<<3)>>3]));c=c1)d=1;else{h=c;return +h}do{b=aa(d,f)|0;a=0;do{h=+P(+(+p[g+(a+b<<3)>>3]));c=c>2]|0;if((k[a+4>>2]|0)<=0)Oa(13148,13216,413,13284);if((k[a+8>>2]|0)<=0)Oa(13148,13216,413,13284);g=k[a>>2]|0;f=k[a+4>>2]|0;if((f|0)<=0)Oa(13290,13216,192,13144);e=k[a+8>>2]|0;if((e|0)<=0)Oa(13290,13216,192,13144);c=+P(+(+p[g>>3]));if((f|0)>1){a=1;do{c=c+ +P(+(+p[g+(a<<3)>>3]));a=a+1|0}while((a|0)!=(f|0))}if((e|0)>1)d=1;else return +c;do{b=aa(d,f)|0;a=0;do{c=c+ +P(+(+p[g+(a+b<<3)>>3]));a=a+1|0}while((a|0)<(f|0));d=d+1|0}while((d|0)!=(e|0));return +c}function Af(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0,g=0,h=0.0;a=k[a>>2]|0;if((k[a+4>>2]|0)<=0)Oa(13148,13216,413,13284);if((k[a+8>>2]|0)<=0)Oa(13148,13216,413,13284);g=k[a>>2]|0;f=k[a+4>>2]|0;if((f|0)<=0)Oa(13290,13216,192,13144);e=k[a+8>>2]|0;if((e|0)<=0)Oa(13290,13216,192,13144);c=+p[g>>3];c=c*c;if((f|0)>1){a=1;do{h=+p[g+(a<<3)>>3];c=c+h*h;a=a+1|0}while((a|0)!=(f|0))}if((e|0)>1)d=1;else{h=c;return +h}do{b=aa(d,f)|0;a=0;do{h=+p[g+(a+b<<3)>>3];c=c+h*h;a=a+1|0}while((a|0)<(f|0));d=d+1|0}while((d|0)!=(e|0));return +c}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(e&1)d=k[(k[a>>2]|0)+d>>2]|0;return +(+$c[d&7](a,c))}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;g=b+4|0;h=k[g>>2]|0;c=b+8|0;j=k[c>>2]|0;k[a>>2]=0;d=a+4|0;k[d>>2]=0;e=a+8|0;k[e>>2]=0;mf(a,h,j);j=a+12|0;h=k[g>>2]|0;f=k[c>>2]|0;k[j>>2]=0;k[a+16>>2]=0;Df(j,(f|0)<(h|0)?f:h);h=a+20|0;f=k[c>>2]|0;k[h>>2]=0;k[a+24>>2]=0;Ef(h,f);f=a+28|0;h=k[c>>2]|0;k[f>>2]=0;k[a+32>>2]=0;Ff(f,h);h=a+36|0;f=k[c>>2]|0;k[h>>2]=0;k[a+40>>2]=0;Gf(h,f);f=a+44|0;h=k[c>>2]|0;k[f>>2]=0;k[a+48>>2]=0;Gf(f,h);h=a+52|0;f=k[c>>2]|0;k[h>>2]=0;k[a+56>>2]=0;Gf(h,f);i[a+60>>0]=0;i[a+61>>0]=0;f=k[b>>2]|0;b=k[g>>2]|0;c=k[c>>2]|0;if(!((k[d>>2]|0)==(b|0)?(k[e>>2]|0)==(c|0):0)){mf(a,b,c);if((k[d>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[e>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else{Hf(a);return}do{p[d+(b<<3)>>3]=+p[f+(b<<3)>>3];b=b+1|0}while((b|0)!=(c|0));Hf(a);return}function Df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=-1)Oa(13359,12702,312,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>536870911){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}e=b<<3;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Ef(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=-1)Oa(13359,12702,312,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>1073741823){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}e=b<<2;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=-1)Oa(13359,12702,312,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>1073741823){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}e=b<<2;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=-1)Oa(13359,12702,312,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>536870911){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}e=b<<3;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Hf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0,r=0,s=0,t=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.0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,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;xa=u;u=u+144|0;ja=xa+64|0;oa=xa+56|0;pa=xa;qa=a+8|0;ta=k[qa>>2]|0;ra=a+4|0;sa=k[ra>>2]|0;wa=(ta|0)<(sa|0)?ta:sa;ka=a+12|0;Df(ka,wa);la=a+36|0;Gf(la,ta);ua=a+28|0;Ff(ua,k[qa>>2]|0);ma=a+44|0;Gf(ma,ta);na=a+52|0;Gf(na,ta);a:do if((ta|0)>0){f=k[a>>2]|0;h=k[ra>>2]|0;j=(h|0)==0;l=(h|0)>0;m=(h|0)==1;if((h|0)<=-1){b=0;while(1){if(f+((aa(h,b)|0)<<3)|0){b=17;break}if((k[qa>>2]|0)<=(b|0)){b=19;break}if(!l){b=21;break}p[(k[na>>2]|0)+(b<<3)>>3]=0.0;p[(k[ma>>2]|0)+(b<<3)>>3]=0.0;b=b+1|0;if((b|0)>=(ta|0))break a}if((b|0)==17)Oa(13818,13988,175,14058);else if((b|0)==19)Oa(13577,13744,122,13812);else if((b|0)==21)Oa(13148,13216,413,13284)}e=k[qa>>2]|0;d=0;while(1){c=f+((aa(h,d)|0)<<3)|0;if((e|0)<=(d|0)){b=19;break}if(!j){if(!l){b=21;break}g=+p[c>>3];g=g*g;if(!m){b=1;do{I=+p[c+(b<<3)>>3];g=g+I*I;b=b+1|0}while((b|0)<(h|0))}}else g=0.0;I=+Q(+g);p[(k[na>>2]|0)+(d<<3)>>3]=I;p[(k[ma>>2]|0)+(d<<3)>>3]=I;d=d+1|0;if((d|0)>=(ta|0))break a}if((b|0)==19)Oa(13577,13744,122,13812);else if((b|0)==21)Oa(13148,13216,413,13284)}while(0);ga=a+48|0;c=k[ga>>2]|0;if((c|0)<=0)Oa(13148,13216,413,13284);d=k[ma>>2]|0;g=+p[d>>3];if((c|0)!=1){b=1;do{I=+p[d+(b<<3)>>3];g=g>2]=wa;K=a+72|0;p[K>>3]=0.0;ha=(wa|0)>0;b:do if(ha){L=pa+4|0;G=pa+12|0;H=pa+16|0;D=pa+24|0;x=pa+28|0;z=pa+32|0;B=pa+36|0;M=pa+40|0;N=pa+48|0;O=ja+4|0;R=ja+12|0;S=ja+24|0;T=ja+36|0;U=ja+52|0;V=ja+60|0;W=ja+64|0;X=ja+72|0;Y=ja+4|0;Z=ja+8|0;_=ja+12|0;$=ja+16|0;ba=ja+20|0;ca=ja+24|0;da=pa+4|0;E=pa+12|0;F=pa+16|0;C=pa+24|0;w=pa+28|0;y=pa+32|0;A=pa+36|0;ea=pa+40|0;fa=pa+48|0;b=c-ta|0;c=d+(b<<3)|0;if((ta|0)>-1|(c|0)==0){t=0;ia=0;q=b;v=ta;r=c;s=d}else Oa(13818,13988,175,14058);c:while(1){if((q|v|0)<0){b=30;break}n=+p[r>>3];if((v|0)>1){d=1;b=0;g=n;o=n;while(1){n=+p[r+(d<<3)>>3];c=n>o;g=c?n:g;b=c?d:b;d=d+1|0;if((d|0)==(v|0))break;else o=c?n:o}}else{b=0;g=n}j=b+ia|0;if((k[J>>2]|0)==(wa|0)?g*g>2]=ia;k[(k[ua>>2]|0)+(ia<<2)>>2]=j;if(b){b=k[a>>2]|0;f=k[ra>>2]|0;h=b+((aa(f,ia)|0)<<3)|0;c=(f|0)>-1;if(!(c|(h|0)==0)){b=38;break}d=k[qa>>2]|0;if((d|0)<=(ia|0)){b=40;break}e=b+((aa(f,j)|0)<<3)|0;if(!(c|(e|0)==0)){b=42;break}if(!((j|0)>-1&(d|0)>(j|0))){b=44;break}if((f|0)>0){b=0;do{q=h+(b<<3)|0;r=e+(b<<3)|0;o=+p[q>>3];p[q>>3]=+p[r>>3];p[r>>3]=o;b=b+1|0}while((b|0)!=(f|0))}r=s+(ia<<3)|0;s=s+(j<<3)|0;o=+p[r>>3];p[r>>3]=+p[s>>3];p[s>>3]=o;s=k[na>>2]|0;r=s+(ia<<3)|0;s=s+(j<<3)|0;o=+p[r>>3];p[r>>3]=+p[s>>3];p[s>>3]=o;t=t+1|0}c=k[ra>>2]|0;b=(k[a>>2]|0)+((aa(c,ia)|0)<<3)|0;if(!((c|0)>-1|(b|0)==0)){b=49;break}if((k[qa>>2]|0)<=(ia|0)){b=51;break}j=sa-ia|0;d=c-j|0;e=b+(d<<3)|0;k[pa>>2]=e;k[L>>2]=j;if(!((j|0)>-1|(e|0)==0)){b=53;break}k[G>>2]=b;k[H>>2]=c;k[D>>2]=a;k[x>>2]=0;k[z>>2]=ia;k[B>>2]=c;k[M>>2]=d;k[N>>2]=c;if((d|j|0)<=-1){b=55;break}b=k[ka>>2]|0;s=j+-1|0;k[ja>>2]=e+8;k[O>>2]=s;if((j|0)<=0){b=57;break}r=pa;q=k[r+4>>2]|0;m=R;k[m>>2]=k[r>>2];k[m+4>>2]=q;m=G;q=k[m+4>>2]|0;r=S;k[r>>2]=k[m>>2];k[r+4>>2]=q;k[T>>2]=k[D>>2];k[T+4>>2]=k[D+4>>2];k[T+8>>2]=k[D+8>>2];k[T+12>>2]=k[D+12>>2];k[U>>2]=d;k[V>>2]=c;k[W>>2]=1;k[X>>2]=c;Jf(pa,ja,b+(ia<<3)|0,oa);r=(k[a>>2]|0)+((aa(k[ra>>2]|0,ia)|0)+ia<<3)|0;p[r>>3]=+p[oa>>3];g=+P(+(+p[oa>>3]));if(g>+p[K>>3])p[K>>3]=g;e=v+-1|0;f=k[ra>>2]|0;b=f-j|0;h=k[qa>>2]|0;c=h-e|0;d=k[a>>2]|0;v=d+(b<<3)+((aa(c,f)|0)<<3)|0;k[ja>>2]=v;k[Y>>2]=j;k[Z>>2]=e;e=e|j;if(!((e|0)>-1|(v|0)==0)){b=61;break}k[_>>2]=a;k[$>>2]=b;k[ba>>2]=c;k[ca>>2]=f;if((e|b|c|0)<=-1){b=63;break}b=d+((aa(f,ia)|0)<<3)|0;if(!((f|0)>-1|(b|0)==0)){b=65;break}if((h|0)<=(ia|0)){b=67;break}v=f-s|0;k[pa>>2]=b+(v<<3);k[da>>2]=s;k[E>>2]=b;k[F>>2]=f;k[C>>2]=a;k[w>>2]=0;k[y>>2]=ia;k[A>>2]=f;k[ea>>2]=v;k[fa>>2]=f;if((v|s|0)<=-1){b=69;break}m=ia;ia=ia+1|0;If(ja,pa,(k[ka>>2]|0)+(m<<3)|0,(k[la>>2]|0)+(ia<<3)|0);if((ta|0)>(ia|0)){q=k[ma>>2]|0;r=(s|0)==0;h=(j|0)>1;j=(s|0)==1;f=ia;do{l=q+(f<<3)|0;g=+p[l>>3];if(g!=0.0){b=k[a>>2]|0;d=k[ra>>2]|0;c=aa(d,f)|0;n=+P(+(+p[b+(c+m<<3)>>3]))/g;n=(n+1.0)*(1.0-n);n=n<0.0?0.0:n;e=(k[na>>2]|0)+(f<<3)|0;o=g/+p[e>>3];if(!(o*o*n<=1.4901161193847656e-08))g=g*+Q(+n);else{b=b+(c<<3)|0;if(!((d|0)>-1|(b|0)==0)){b=87;break c}if((k[qa>>2]|0)<=(f|0)){b=88;break c}v=d-s|0;c=b+(v<<3)|0;if((v|s|0)<=-1){b=89;break c}do if(r)g=0.0;else{if(!h){b=90;break c}g=+p[c>>3];g=g*g;if(j)break;else b=1;do{o=+p[c+(b<<3)>>3];g=g+o*o;b=b+1|0}while((b|0)<(s|0))}while(0);g=+Q(+g);p[e>>3]=g}p[l>>3]=g}f=f+1|0}while((f|0)<(ta|0))}if((ia|0)>=(wa|0)){va=t;break b}s=k[ma>>2]|0;v=ta-ia|0;q=(k[ga>>2]|0)-v|0;r=s+(q<<3)|0;if(!((v|0)>-1|(r|0)==0)){b=28;break}}switch(b|0){case 28:{Oa(13818,13988,175,14058);break}case 30:{Oa(14177,13744,147,13812);break}case 38:{Oa(13818,13988,175,14058);break}case 40:{Oa(13577,13744,122,13812);break}case 42:{Oa(13818,13988,175,14058);break}case 44:{Oa(13577,13744,122,13812);break}case 49:{Oa(13818,13988,175,14058);break}case 51:{Oa(13577,13744,122,13812);break}case 53:{Oa(13818,13988,175,14058);break}case 55:{Oa(14177,13744,147,13812);break}case 57:{Oa(13818,13988,175,14058);break}case 61:{Oa(13818,13988,175,14058);break}case 63:{Oa(14177,13744,147,13812);break}case 65:{Oa(13818,13988,175,14058);break}case 67:{Oa(13577,13744,122,13812);break}case 69:{Oa(14177,13744,147,13812);break}case 87:{Oa(13818,13988,175,14058);break}case 88:{Oa(13577,13744,122,13812);break}case 89:{Oa(14177,13744,147,13812);break}case 90:{Oa(13148,13216,413,13284);break}}}else va=0;while(0);f=a+20|0;Ef(f,ta);e=a+24|0;d=k[e>>2]|0;if((d|0)>0){c=k[f>>2]|0;b=0;do{k[c+(b<<2)>>2]=b;b=b+1|0}while((b|0)!=(d|0))}if(!ha){va=va<<1;va=va&2;va=va^2;va=va+-1|0;wa=a+84|0;k[wa>>2]=va;wa=a+60|0;i[wa>>0]=1;u=xa;return}c=k[ua>>2]|0;b=0;while(1){d=k[c+(b<<2)>>2]|0;if((d|b|0)<=-1){b=94;break}ua=k[e>>2]|0;if(!((ua|0)>(b|0)&(ua|0)>(d|0))){b=94;break}ua=k[f>>2]|0;sa=ua+(b<<2)|0;ua=ua+(d<<2)|0;ta=k[sa>>2]|0;k[sa>>2]=k[ua>>2];k[ua>>2]=ta;b=b+1|0;if((b|0)>=(wa|0)){b=91;break}}if((b|0)==91){va=va<<1;va=va&2;va=va^2;va=va+-1|0;wa=a+84|0;k[wa>>2]=va;wa=a+60|0;i[wa>>0]=1;u=xa;return}else if((b|0)==94)Oa(15008,15045,187,15125)}function If(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+288|0;I=M+272|0;J=M+200|0;K=M+104|0;y=M+96|0;L=M+40|0;f=M+252|0;w=M;D=a+4|0;e=k[D>>2]|0;g=+p[c>>3];if((e|0)==1){g=1.0-g;h=k[a+8>>2]|0;if((h|0)<=-1)Oa(11919,12068,74,12145);i=k[a>>2]|0;f=k[a+24>>2]|0;if(!h){u=M;return}else e=0;do{L=i+((aa(e,f)|0)<<3)|0;p[L>>3]=g*+p[L>>3];e=e+1|0}while((e|0)!=(h|0));u=M;return}if(!(g!=0.0)){u=M;return}x=a+8|0;E=k[x>>2]|0;F=d;if((E|0)<=-1)Oa(14697,13988,163,14058);n=e+-1|0;k[L>>2]=(k[a>>2]|0)+8;G=L+4|0;k[G>>2]=n;H=L+8|0;k[H>>2]=E;if((E|n|0)<=-1)Oa(13818,13988,175,14058);h=L+12|0;k[h>>2]=k[a>>2];k[h+4>>2]=k[a+4>>2];k[h+8>>2]=k[a+8>>2];k[h+12>>2]=k[a+12>>2];k[h+16>>2]=k[a+16>>2];k[h+20>>2]=k[a+20>>2];k[h+24>>2]=k[a+24>>2];k[L+40>>2]=1;k[L+44>>2]=0;k[L+48>>2]=k[L+36>>2];if((e|0)<=0)Oa(14177,13744,147,13812);q=b;o=k[q>>2]|0;q=k[q+4>>2]|0;A=b+12|0;s=A;r=k[s>>2]|0;s=k[s+4>>2]|0;z=b+24|0;B=b+40|0;t=k[B>>2]|0;C=b+48|0;v=k[C>>2]|0;j=f+4|0;k[j>>2]=k[z>>2];k[j+4>>2]=k[z+4>>2];k[j+8>>2]=k[z+8>>2];k[j+12>>2]=k[z+12>>2];m=L;l=k[m>>2]|0;m=k[m+4>>2]|0;i=w;e=h;f=i+40|0;do{k[i>>2]=k[e>>2];i=i+4|0;e=e+4|0}while((i|0)<(f|0));if((q|0)!=(n|0))Oa(14710,14850,97,14920);if(!E)e=0;else{iF(d|0,0,E<<3|0)|0;e=E}p[y>>3]=1.0;k[I>>2]=F;k[I+8>>2]=e;i=J;k[i>>2]=l;k[i+4>>2]=m;k[J+8>>2]=E;i=J+12|0;e=w;f=i+40|0;do{k[i>>2]=k[e>>2];i=i+4|0;e=e+4|0}while((i|0)<(f|0));e=K;k[e>>2]=o;k[e+4>>2]=q;e=K+12|0;k[e>>2]=r;k[e+4>>2]=s;e=K+24|0;k[e>>2]=k[j>>2];k[e+4>>2]=k[j+4>>2];k[e+8>>2]=k[j+8>>2];k[e+12>>2]=k[j+12>>2];k[K+40>>2]=t;k[K+48>>2]=v;Kf(J,K,I,y);j=k[a>>2]|0;e=k[x>>2]|0;if(!((j|0)==0|(e|0)>-1))Oa(13818,13988,175,14058);h=a+24|0;f=k[h>>2]|0;if((k[D>>2]|0)<=0)Oa(13577,13744,122,13812);if((E|0)!=(e|0))Oa(14392,12207,710,12285);i=(E|0)>0;if(i){e=0;do{a=d+(e<<3)|0;y=j+((aa(e,f)|0)<<3)|0;p[a>>3]=+p[y>>3]+ +p[a>>3];e=e+1|0}while((e|0)!=(E|0))}g=+p[c>>3];f=k[h>>2]|0;if((k[D>>2]|0)<=0)Oa(13577,13744,122,13812);if(i){e=0;do{D=j+((aa(e,f)|0)<<3)|0;p[D>>3]=+p[D>>3]-g*+p[d+(e<<3)>>3];e=e+1|0}while((e|0)!=(E|0))}e=k[b+4>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);g=+p[c>>3];c=b;a=k[c>>2]|0;c=k[c+4>>2]|0;D=A;A=k[D>>2]|0;D=k[D+4>>2]|0;d=k[B>>2]|0;b=k[C>>2]|0;k[K+8>>2]=e;p[K+16>>3]=g;e=K+24|0;k[e>>2]=a;k[e+4>>2]=c;e=K+36|0;k[e>>2]=A;k[e+4>>2]=D;e=K+48|0;k[e>>2]=k[z>>2];k[e+4>>2]=k[z+4>>2];k[e+8>>2]=k[z+8>>2];k[e+12>>2]=k[z+12>>2];k[K+64>>2]=d;k[K+72>>2]=b;e=K+80|0;k[e>>2]=F;k[K+88>>2]=E;if(!((k[G>>2]|0)==(c|0)?(k[H>>2]|0)==(E|0):0))Oa(14392,14928,176,13144);Mf(L,K,e,I,J);u=M;return}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0.0,h=0.0,i=0,j=0,l=0;i=k[a+4>>2]|0;l=i+-1|0;f=k[a>>2]|0;j=f+8|0;if((i|0)<=0)Oa(13818,13988,175,14058);if(!((l|0)==0|(i|0)==1)){e=+p[j>>3];e=e*e;if((l|0)!=1){a=1;do{h=+p[j+(a<<3)>>3];e=e+h*h;a=a+1|0}while((a|0)<(l|0))}h=+p[f>>3];if(!(e<=2.2250738585072014e-308)){e=+Q(+(e+h*h));e=!(h>=0.0)?e:-e;p[d>>3]=e;g=h-e;if((k[b+4>>2]|0)!=(l|0))Oa(14445,14320,257,12780);f=k[b>>2]|0;if((i|0)>1){a=0;do{p[f+(a<<3)>>3]=+p[j+(a<<3)>>3]/g;a=a+1|0}while((a|0)!=(l|0));e=+p[d>>3]}p[c>>3]=(e-h)/e;return}else e=h}else e=+p[f>>3];p[c>>3]=0.0;p[d>>3]=e;a=k[b+4>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(!a)return;iF(k[b>>2]|0,0,a<<3|0)|0;return}function Kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;l=n+8|0;m=n;h=k[a>>2]|0;i=k[a+4>>2]|0;j=k[a+8>>2]|0;f=k[a+48>>2]|0;e=k[b+4>>2]|0;g=+p[d>>3];if(e>>>0>536870911){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}a=k[b>>2]|0;b=(a|0)==0;e=e<<3;if(b)if(e>>>0>=131073){d=Oq(e+16|0)|0;a=d+16&-16;if(!d){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}k[a+-4>>2]=d;if(!a){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}}else{a=u;u=u+((1*(e+15|0)|0)+15&-16)|0;a=a+15&-16}d=b?a:0;k[l>>2]=h;k[l+4>>2]=f;k[m>>2]=a;k[m+4>>2]=1;a=k[c>>2]|0;if(!((a|0)==0?1:(k[c+8>>2]|0)>-1))Oa(13818,13988,175,14058);Lf(j,i,l,m,a,1,g);if((d|0)==0|e>>>0>131072^1){u=n;return}Pq(k[d+-4>>2]|0);u=n;return}function Lf(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;var h=0,i=0.0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;z=c+4|0;y=k[d>>2]|0;x=(y&7|0)!=0;h=x<<31>>31;w=k[c>>2]|0;A=w;if(!((w&7|0)==0?!((h|0)==(a|0)|(x|(b|0)==0)):0))h=0;j=((a|0)/4|0)<<2;a:do if((a|0)>3){m=k[z>>2]|0;if((b|0)>0)l=0;else{i=g*0.0;c=0;while(1){y=e+((aa(c,f)|0)<<3)|0;p[y>>3]=i+ +p[y>>3];y=e+((aa(c|1,f)|0)<<3)|0;p[y>>3]=i+ +p[y>>3];y=e+((aa(c|2,f)|0)<<3)|0;p[y>>3]=i+ +p[y>>3];y=e+((aa(c|3,f)|0)<<3)|0;p[y>>3]=i+ +p[y>>3];c=c+4|0;if((c|0)>=(j|0))break a}}do{n=A+((aa(m,l)|0)<<3)|0;s=l|1;t=A+((aa(m,s)|0)<<3)|0;u=l|2;v=A+((aa(m,u)|0)<<3)|0;w=l|3;x=A+((aa(m,w)|0)<<3)|0;c=0;i=0.0;o=0.0;q=0.0;r=0.0;do{B=+p[y+(c<<3)>>3];r=r+B*+p[n+(c<<3)>>3];q=q+B*+p[t+(c<<3)>>3];o=o+B*+p[v+(c<<3)>>3];i=i+B*+p[x+(c<<3)>>3];c=c+1|0}while((c|0)!=(b|0));x=e+((aa(l,f)|0)<<3)|0;p[x>>3]=r*g+ +p[x>>3];x=e+((aa(s,f)|0)<<3)|0;p[x>>3]=q*g+ +p[x>>3];x=e+((aa(u,f)|0)<<3)|0;p[x>>3]=o*g+ +p[x>>3];x=e+((aa(w,f)|0)<<3)|0;p[x>>3]=i*g+ +p[x>>3];l=l+4|0}while((l|0)<(j|0))}while(0);if((j|0)>=(a|0))return;u=k[z>>2]|0;s=k[d>>2]|0;t=(b|0)>0;if((h|0)>=0){do{h=A+((aa(u,j)|0)<<3)|0;if(t){c=0;i=0.0;do{i=i+ +p[h+(c<<3)>>3]*+p[s+(c<<3)>>3];c=c+1|0}while((c|0)!=(b|0))}else i=0.0;d=e+((aa(j,f)|0)<<3)|0;p[d>>3]=i*g+ +p[d>>3];j=j+1|0}while((j|0)!=(a|0));return}m=s+(h<<3)|0;n=s+(h<<3)|0;do{l=A+((aa(u,j)|0)<<3)|0;d=l+(h<<3)|0;i=+p[d>>3]*+p[((d&7|0)==0?m:n)>>3]+0.0;if(t){c=0;do{i=i+ +p[l+(c<<3)>>3]*+p[s+(c<<3)>>3];c=c+1|0}while((c|0)!=(b|0))}d=e+((aa(j,f)|0)<<3)|0;p[d>>3]=i*g+ +p[d>>3];j=j+1|0}while((j|0)!=(a|0));return}function Mf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;o=u;u=u+16|0;m=o;n=k[c>>2]|0;k[m>>2]=0;h=m+4|0;k[h>>2]=0;g=+p[b+16>>3];f=k[b+24>>2]|0;c=k[b+28>>2]|0;if(c){Nf(m,c,1);if((k[h>>2]|0)!=(c|0))Oa(12160,12207,721,12285);d=k[m>>2]|0;if((c|0)>0){e=0;do{p[d+(e<<3)>>3]=g*+p[f+(e<<3)>>3];e=e+1|0}while((e|0)!=(c|0))}}else d=0;l=k[a+8>>2]|0;a:do if((l|0)>0){i=k[a>>2]|0;j=k[a+48>>2]|0;a=k[a+4>>2]|0;f=k[h>>2]|0;h=(f|0)>-1;b=k[m>>2]|0;f=(a|0)==(f|0);e=(a|0)>0;if((a|0)>-1){if(h)q=0;else Oa(11919,12068,74,12145);while(1){c=i+((aa(j,q)|0)<<3)|0;if((l|0)<=(q|0)){d=24;break}g=+p[n+(q<<3)>>3];if(!f){d=26;break}if(e){d=0;do{m=c+(d<<3)|0;p[m>>3]=+p[m>>3]-g*+p[b+(d<<3)>>3];d=d+1|0}while((d|0)!=(a|0))}q=q+1|0;if((q|0)>=(l|0)){s=b;break a}}if((d|0)==24)Oa(13577,13744,122,13812);else if((d|0)==26)Oa(14392,12207,710,12285)}if(!h)if(!i)Oa(11919,12068,74,12145);else Oa(13818,13988,175,14058);else r=0;while(1){if(i+((aa(j,r)|0)<<3)|0){d=23;break}if((l|0)<=(r|0)){d=24;break}if(!f){d=26;break}r=r+1|0;if((r|0)>=(l|0)){s=b;break a}}if((d|0)==23)Oa(13818,13988,175,14058);else if((d|0)==24)Oa(13577,13744,122,13812);else if((d|0)==26)Oa(14392,12207,710,12285)}else s=d;while(0);if(!s){u=o;return}Pq(k[s+-4>>2]|0);u=o;return}function Nf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!((b|0)>-1&(c|0)==1))Oa(12303,12702,285,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>536870911){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}e=b<<3;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(!(d&1)){d=c;e=+Vc[d&7](a);return +e}else{d=k[(k[a>>2]|0)+c>>2]|0;e=+Vc[d&7](a);return +e}return 0.0}function Pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;k[a>>2]=0;h=a+4|0;k[h>>2]=0;i=a+8|0;k[i>>2]=0;e=b+4|0;c=k[e>>2]|0;f=b+8|0;d=k[f>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){m=Kb(4)|0;cF(m);Cc(m|0,2032,79)}mf(a,c,d);m=k[b>>2]|0;l=k[b+24>>2]|0;j=k[e>>2]|0;g=k[f>>2]|0;if(!((k[h>>2]|0)==(j|0)?(k[i>>2]|0)==(g|0):0)){mf(a,j,g);if((k[h>>2]|0)!=(j|0))Oa(12160,12207,721,12285);if((k[i>>2]|0)!=(g|0))Oa(12160,12207,721,12285)}b=k[a>>2]|0;if((j|0)>0&(g|0)>0)c=0;else return;do{e=aa(c,j)|0;f=aa(c,l)|0;d=0;do{p[b+(d+e<<3)>>3]=+p[m+(d+f<<3)>>3];d=d+1|0}while((d|0)!=(j|0));c=c+1|0}while((c|0)!=(g|0));return}function Qf(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 g=0,h=0,i=0,j=0;i=u;u=u+16|0;h=i;g=k[a>>2]|0;j=k[a+4>>2]|0;a=b+(j>>1)|0;if(j&1)g=k[(k[a>>2]|0)+g>>2]|0;Tc[g&15](h,a,c,d,e,f);a=sf(h)|0;g=k[h>>2]|0;if(!g){u=i;return a|0}Pq(k[g+-4>>2]|0);u=i;return a|0}function Rf(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;p[e>>3]=c;Nc[d&63](a,e);u=f;return}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function Tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0,j=0;k[a>>2]=0;h=a+4|0;k[h>>2]=0;i=a+8|0;k[i>>2]=0;e=b+8|0;c=k[e>>2]|0;f=b+12|0;d=k[f>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}mf(a,c,d);j=k[k[b>>2]>>2]|0;g=+p[b+16>>3];d=k[e>>2]|0;c=k[f>>2]|0;if(!((k[h>>2]|0)==(d|0)?(k[i>>2]|0)==(c|0):0)){mf(a,d,c);if((k[h>>2]|0)!=(d|0))Oa(12160,12207,721,12285);if((k[i>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}b=k[a>>2]|0;d=aa(c,d)|0;if((d|0)>0)c=0;else return;do{p[b+(c<<3)>>3]=g*+p[j+(c<<3)>>3];c=c+1|0}while((c|0)!=(d|0));return}function Uf(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0;g=u;u=u+32|0;f=g+8|0;e=g;d=k[a>>2]|0;h=k[a+4>>2]|0;a=b+(h>>1)|0;if(h&1)d=k[(k[a>>2]|0)+d>>2]|0;p[e>>3]=c;cd[d&63](f,a,e);a=sf(f)|0;d=k[f>>2]|0;if(!d){u=g;return a|0}Pq(k[d+-4>>2]|0);u=g;return a|0}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+4>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}mf(a,d,c);c=k[b>>2]|0;d=k[c+4>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Wf(a,h,i);return}mf(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Wf(a,h,i);return}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+16|0;h=i;e=i+8|0;f=k[c+4>>2]|0;g=k[a+4>>2]|0;d=k[a+8>>2]|0;if((f|0)>0&(g+f+d|0)<20){k[h>>2]=b;k[h+4>>2]=c;if((k[b+8>>2]|0)!=(f|0))Oa(14710,14850,97,14920);Yf(a,h,e);u=i;return}if((d|g|0)<=-1)Oa(11919,12068,74,12145);d=aa(d,g)|0;if((d|0)>0)iF(k[a>>2]|0,0,d<<3|0)|0;p[h>>3]=1.0;Xf(a,b,c,h);u=i;return}function Xf(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,j=0,l=0,m=0,n=0,o=0.0,q=0;n=u;u=u+32|0;m=n;i=a+4|0;j=k[i>>2]|0;l=b+4|0;if((j|0)!=(k[l>>2]|0))Oa(15296,15349,460,15440);e=k[a+8>>2]|0;f=c+8|0;if((e|0)!=(k[f>>2]|0))Oa(15296,15349,460,15440);g=b+8|0;h=k[g>>2]|0;if((e|0)==0|((j|0)==0|(h|0)==0)){u=n;return}o=+p[d>>3];q=m;k[q>>2]=0;k[q+4>>2]=0;q=m+8|0;k[q>>2]=j;d=m+12|0;k[d>>2]=e;j=m+16|0;k[j>>2]=h;_f(j,q,d,1);j=k[j>>2]|0;h=aa(j,k[q>>2]|0)|0;k[m+20>>2]=h;j=aa(k[d>>2]|0,j)|0;k[m+24>>2]=j;l=k[l>>2]|0;$f(l,k[f>>2]|0,k[g>>2]|0,k[b>>2]|0,l,k[c>>2]|0,k[c+4>>2]|0,k[a>>2]|0,k[i>>2]|0,o,m,0);a=k[m>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[m+4>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);u=n;return}function Yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0;j=u;u=u+32|0;i=j;g=k[b>>2]|0;k[i>>2]=g;e=k[b+4>>2]|0;k[i+4>>2]=e;h=g;k[i+8>>2]=k[g>>2];g=k[h+4>>2]|0;k[i+12>>2]=g;k[i+16>>2]=k[e>>2];k[i+20>>2]=k[e+4>>2];k[i+24>>2]=k[h+8>>2];e=k[e+8>>2]|0;h=a+4|0;if((k[h>>2]|0)==(g|0)?(d=a+8|0,(k[d>>2]|0)==(e|0)):0)l=d;else{mf(a,g,e);if((k[h>>2]|0)!=(g|0))Oa(12160,12207,721,12285);c=a+8|0;if((k[c>>2]|0)==(e|0))l=c;else Oa(12160,12207,721,12285)}f=k[a>>2]|0;if((e|0)<=0){u=j;return}a=0;b=g;c=e;do{if((b|0)>0){d=aa(a,g)|0;c=0;do{m=+Zf(i,c,a);p[f+(c+d<<3)>>3]=m;c=c+1|0;b=k[h>>2]|0}while((c|0)<(b|0));c=k[l>>2]|0}a=a+1|0}while((a|0)<(c|0));u=j;return}function Zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;e=k[a>>2]|0;g=(k[e>>2]|0)+(b<<3)|0;h=k[e+8>>2]|0;if(!((g|0)==0|(h|0)>-1))Oa(13818,13988,175,14058);if((b|0)<=-1)Oa(13577,13744,122,13812);f=k[e+4>>2]|0;if((f|0)<=(b|0))Oa(13577,13744,122,13812);e=k[a+4>>2]|0;a=k[e+4>>2]|0;b=(k[e>>2]|0)+((aa(a,c)|0)<<3)|0;if(!((a|0)>-1|(b|0)==0))Oa(13818,13988,175,14058);if((c|0)<=-1)Oa(13577,13744,122,13812);if((k[e+8>>2]|0)<=(c|0))Oa(13577,13744,122,13812);if((h|0)!=(a|0))Oa(14550,14607,110,14683);if(!h){d=0.0;return +d}if((h|0)<=0)Oa(13148,13216,413,13284);d=+p[g>>3]*+p[b>>3];if((h|0)==1)return +d;else e=1;do{c=g+((aa(e,f)|0)<<3)|0;d=d+ +p[c>>3]*+p[b+(e<<3)>>3];e=e+1|0}while((e|0)<(h|0));return +d}function _f(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,j=0,l=0,m=0,n=0,o=0;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}m=k[7994]|0;o=k[7995]|0;n=k[7996]|0;if((d|0)>1){f=(m+-32|0)/40|0;f=(f|0)<320?f:320;e=k[a>>2]|0;if((f|0)<(e|0)){e=f-((f|0)%8|0)|0;k[a>>2]=e}e=((o-m|0)>>>0)/(e<<5>>>0)|0;f=k[c>>2]|0;h=d+-1|0;g=(h+f|0)/(d|0)|0;if((e|0)>(g|0)){e=g+3|0;e=e-((e|0)%4|0)|0;e=(e|0)<(f|0)?e:f}else e=e-((e|0)%4|0)|0;k[c>>2]=e;if((n|0)<=(o|0))return;f=((n-o|0)>>>0)/((aa(d<<3,k[a>>2]|0)|0)>>>0)|0;g=k[b>>2]|0;e=(h+g|0)/(d|0)|0;if((f|0)>0&(f|0)<(e|0)){k[b>>2]=f;return}else{k[b>>2]=(e|0)<(g|0)?e:g;return}}e=k[b>>2]|0;f=k[c>>2]|0;j=(e|0)<(f|0)?f:e;l=k[a>>2]|0;if((((l|0)<(j|0)?j:l)|0)<48)return;d=m+-32|0;j=((d|0)/40|0)&-8;j=(j|0)>1?j:1;if((l|0)>(j|0)){e=(l|0)%(j|0)|0;if(!e)e=j;else e=j-(((j+-1-e|0)/((((l|0)/(j|0)|0)<<3)+8|0)|0)<<3)|0;k[a>>2]=e;a=k[b>>2]|0;g=e;h=k[c>>2]|0}else{a=e;g=l;h=f}d=d-(aa(a<<3,g)|0)|0;e=(d|0)<(g<<5|0);j=((e?4718592:d)>>>0)/((e?j<<5:g<<3)>>>0)|0;e=1572864/(g<<4>>>0)|0;e=((j|0)<(e|0)?j:e)&-4;if((h|0)>(e|0)){f=(h|0)%(e|0)|0;if(f)e=e-(((e-f|0)/((((h|0)/(e|0)|0)<<2)+4|0)|0)<<2)|0;k[c>>2]=e;return}if((l|0)!=(g|0))return;e=aa(l<<3,h)|0;if((e|0)<1025){f=a;e=m}else{e=(n|0)!=0&(e|0)<32769;f=e?((a|0)<576?a:576):a;e=e?o:1572864}e=(e>>>0)/((l*24|0)>>>0)|0;e=(f|0)<(e|0)?f:e;if(!e)return;f=(a|0)%(e|0)|0;if(f)e=e-((e-f|0)/(((a|0)/(e|0)|0)+1|0)|0)|0;k[b>>2]=e;return}function $f(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=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;N=u;u=u+16|0;I=N+10|0;J=N+9|0;K=N+8|0;L=N;M=k[l+16>>2]|0;H=k[l+8>>2]|0;q=(H|0)<(a|0);H=q?H:a;r=k[l+12>>2]|0;G=(r|0)<(b|0)?r:b;m=aa(H,M)|0;p=aa(G,M)|0;if(m>>>0>536870911){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}n=k[l>>2]|0;o=m<<3;if(!n)do if(o>>>0>=131073){m=Oq(o+16|0)|0;n=m+16&-16;if(!m){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}k[n+-4>>2]=m;if(!n){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}else{m=k[l>>2]|0;break}}else{n=u;u=u+((1*(o+15|0)|0)+15&-16)|0;n=n+15&-16;m=0}while(0);else m=n;F=(m|0)==0?n:0;E=o>>>0>131072;if(p>>>0>536870911){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}l=l+4|0;o=k[l>>2]|0;p=p<<3;if(!o)do if(p>>>0>=131073){m=Oq(p+16|0)|0;o=m+16&-16;if(!m){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}k[o+-4>>2]=m;if(!o){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}else{m=k[l>>2]|0;break}}else{o=u;u=u+((1*(p+15|0)|0)+15&-16)|0;o=o+15&-16;m=0}while(0);else m=o;D=(m|0)==0?o:0;z=p>>>0>131072;if((a|0)>0){A=(c|0)>0;B=L+4|0;C=(b|0)>0;s=(M|0)==(c|0)&q&(r|0)>=(b|0)^1;v=L+4|0;w=L+4|0;q=0;do{r=q;q=q+H|0;x=((q|0)>(a|0)?a:q)-r|0;if(A){y=(r|0)==0|s;p=0;do{l=p;p=p+M|0;t=((p|0)>(c|0)?c:p)-l|0;m=d+((aa(l,e)|0)+r<<3)|0;k[L>>2]=m;k[B>>2]=e;ag(I,n,L,t,x,0,0);if(C)if(y){m=0;do{P=m;m=m+G|0;O=((m|0)>(b|0)?b:m)-P|0;Q=f+((aa(P,g)|0)+l<<3)|0;k[L>>2]=Q;k[v>>2]=g;bg(J,o,L,t,O,0,0);P=h+((aa(P,i)|0)+r<<3)|0;k[L>>2]=P;k[w>>2]=i;cg(K,L,n,o,x,t,O,j,-1,-1,0,0)}while((m|0)<(b|0))}else{m=0;do{Q=m;m=m+G|0;P=h+((aa(Q,i)|0)+r<<3)|0;k[L>>2]=P;k[w>>2]=i;cg(K,L,n,o,x,t,((m|0)>(b|0)?b:m)-Q|0,j,-1,-1,0,0)}while((m|0)<(b|0))}}while((p|0)<(c|0))}}while((q|0)<(a|0))}if(!((D|0)==0|z^1))Pq(k[D+-4>>2]|0);if((F|0)==0|E^1){u=N;return}Pq(k[F+-4>>2]|0);u=N;return}function ag(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;var h=0,i=0,j=0;if(g|f|0)Oa(15454,15545,1705,29764);if((e|0)<=0)return;i=k[c>>2]|0;h=k[c+4>>2]|0;if((d|0)>0){f=0;g=0}else return;while(1){a=0;c=g;while(1){j=i+((aa(h,a)|0)+f<<3)|0;p[b+(c<<3)>>3]=+p[j>>3];a=a+1|0;if((a|0)==(d|0))break;else c=c+1|0}f=f+1|0;if((f|0)==(e|0))break;else g=g+d|0}return}function bg(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;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;if(g|f|0)Oa(15454,15545,1906,29764);i=((e|0)/4|0)<<2;if((e|0)>3?(r=k[c>>2]|0,s=k[c+4>>2]|0,(d|0)>0):0){j=d<<2;q=(i|0)>4?i:4;f=0;g=0;while(1){l=r+((aa(s,f)|0)<<3)|0;m=r+((aa(s,f|1)|0)<<3)|0;n=r+((aa(s,f|2)|0)<<3)|0;o=r+((aa(s,f|3)|0)<<3)|0;a=0;h=g;while(1){p[b+(h<<3)>>3]=+p[l+(a<<3)>>3];p[b+((h|1)<<3)>>3]=+p[m+(a<<3)>>3];p[b+((h|2)<<3)>>3]=+p[n+(a<<3)>>3];p[b+((h|3)<<3)>>3]=+p[o+(a<<3)>>3];a=a+1|0;if((a|0)==(d|0))break;else h=h+4|0}f=f+4|0;if((f|0)>=(i|0))break;else g=j+g|0}a=aa(q,d)|0}else a=0;if((i|0)>=(e|0))return;l=k[c>>2]|0;j=k[c+4>>2]|0;if((d|0)<=0)return;while(1){h=l+((aa(j,i)|0)<<3)|0;f=0;g=a;while(1){p[b+(g<<3)>>3]=+p[h+(f<<3)>>3];f=f+1|0;if((f|0)==(d|0))break;else g=g+1|0}i=i+1|0;if((i|0)==(e|0))break;else a=a+d|0}return}function cg(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=j|0;l=l|0;m=m|0;var n=0.0,o=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0;N=(i|0)==-1?f:i;C=(j|0)==-1?f:j;a=(g|0)/4|0;D=a<<2;E=f&-8;if((e|0)<=0)return;F=(g|0)>3;G=b+4|0;H=m<<2;I=(E|0)>0;J=(E|0)<(f|0);K=(D|0)<(g|0);A=(E+-1|0)>>>3;M=d+((A<<5)+H+32<<3)|0;L=C<<2;A=A<<3;B=d+(((aa(C,a)|0)<<2)+m+A+8<<3)|0;z=0;A=c+(A+l+8<<3)|0;while(1){if(F){x=c+((aa(z,N)|0)+l<<3)|0;o=0;y=M;while(1){a=k[b>>2]|0;w=k[G>>2]|0;q=a+((aa(w,o)|0)+z<<3)|0;u=a+((aa(w,o|1)|0)+z<<3)|0;v=a+((aa(w,o|2)|0)+z<<3)|0;w=a+((aa(w,o|3)|0)+z<<3)|0;a=d+((aa(o,C)|0)+H<<3)|0;if(I){j=0;i=x;t=0.0;r=0.0;n=0.0;s=0.0;while(1){V=+p[i>>3];U=+p[i+8>>3];T=+p[i+16>>3];S=+p[i+24>>3];R=+p[i+32>>3];Q=+p[i+40>>3];P=+p[i+48>>3];O=+p[i+56>>3];s=s+V*+p[a>>3]+U*+p[a+32>>3]+T*+p[a+64>>3]+S*+p[a+96>>3]+R*+p[a+128>>3]+Q*+p[a+160>>3]+P*+p[a+192>>3]+O*+p[a+224>>3];t=t+V*+p[a+8>>3]+U*+p[a+40>>3]+T*+p[a+72>>3]+S*+p[a+104>>3]+R*+p[a+136>>3]+Q*+p[a+168>>3]+P*+p[a+200>>3]+O*+p[a+232>>3];r=r+V*+p[a+16>>3]+U*+p[a+48>>3]+T*+p[a+80>>3]+S*+p[a+112>>3]+R*+p[a+144>>3]+Q*+p[a+176>>3]+P*+p[a+208>>3]+O*+p[a+240>>3];n=n+V*+p[a+24>>3]+U*+p[a+56>>3]+T*+p[a+88>>3]+S*+p[a+120>>3]+R*+p[a+152>>3]+Q*+p[a+184>>3]+P*+p[a+216>>3]+O*+p[a+248>>3];j=j+8|0;if((j|0)>=(E|0)){a=y;i=A;break}else{a=a+256|0;i=i+64|0}}}else{s=0.0;i=x;t=0.0;r=0.0;n=0.0}if(J){j=E;while(1){V=+p[i>>3];s=s+V*+p[a>>3];t=t+V*+p[a+8>>3];r=r+V*+p[a+16>>3];n=n+V*+p[a+24>>3];j=j+1|0;if((j|0)==(f|0))break;else{a=a+32|0;i=i+8|0}}}V=t*h+ +p[u>>3];p[q>>3]=s*h+ +p[q>>3];p[u>>3]=V;V=n*h+ +p[w>>3];p[v>>3]=r*h+ +p[v>>3];p[w>>3]=V;o=o+4|0;if((o|0)>=(D|0))break;else y=y+(L<<3)|0}}a:do if(K){w=c+((aa(z,N)|0)+l<<3)|0;if(I){u=D;v=B}else{o=D;while(1){q=(k[b>>2]|0)+((aa(k[G>>2]|0,o)|0)+z<<3)|0;if(J){a=E;i=w;n=0.0;j=d+((aa(o,C)|0)+m<<3)|0;while(1){n=n+ +p[i>>3]*+p[j>>3];a=a+1|0;if((a|0)==(f|0))break;else{i=i+8|0;j=j+8|0}}}else n=0.0;p[q>>3]=n*h+ +p[q>>3];o=o+1|0;if((o|0)==(g|0))break a}}while(1){o=k[b>>2]|0;q=(aa(k[G>>2]|0,u)|0)+z|0;a=0;i=d+((aa(u,C)|0)+m<<3)|0;j=w;n=0.0;while(1){n=n+ +p[j>>3]*+p[i>>3]+ +p[j+8>>3]*+p[i+8>>3]+ +p[j+16>>3]*+p[i+16>>3]+ +p[j+24>>3]*+p[i+24>>3]+ +p[j+32>>3]*+p[i+32>>3]+ +p[j+40>>3]*+p[i+40>>3]+ +p[j+48>>3]*+p[i+48>>3]+ +p[j+56>>3]*+p[i+56>>3];a=a+8|0;if((a|0)>=(E|0))break;else{i=i+64|0;j=j+64|0}}o=o+(q<<3)|0;if(J){i=E;j=A;a=v;while(1){n=n+ +p[j>>3]*+p[a>>3];i=i+1|0;if((i|0)==(f|0))break;else{j=j+8|0;a=a+8|0}}}p[o>>3]=n*h+ +p[o>>3];u=u+1|0;if((u|0)==(g|0))break;else v=v+(C<<3)|0}}while(0);z=z+1|0;if((z|0)==(e|0))break;else A=A+(N<<3)|0}return}function dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=sf(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;e=b+4|0;d=k[e>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}mf(a,c,d);f=k[k[b>>2]>>2]|0;c=k[e>>2]|0;e=k[c>>2]|0;b=k[c+4>>2]|0;c=k[c+8>>2]|0;if(!((k[g>>2]|0)==(b|0)?(k[h>>2]|0)==(c|0):0)){mf(a,b,c);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else return;do{p[d+(b<<3)>>3]=+p[f+(b<<3)>>3]+ +p[e+(b<<3)>>3];b=b+1|0}while((b|0)!=(c|0));return}function fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;e=b+4|0;d=k[e>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}mf(a,c,d);f=k[k[b>>2]>>2]|0;c=k[e>>2]|0;e=k[c>>2]|0;b=k[c+4>>2]|0;c=k[c+8>>2]|0;if(!((k[g>>2]|0)==(b|0)?(k[h>>2]|0)==(c|0):0)){mf(a,b,c);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else return;do{p[d+(b<<3)>>3]=+p[f+(b<<3)>>3]-+p[e+(b<<3)>>3];b=b+1|0}while((b|0)!=(c|0));return}function gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=sf(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function hg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)e=k[(k[a>>2]|0)+e>>2]|0;return +(+Zc[e&3](a,c,d))}function ig(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;h=u;u=u+16|0;g=h;f=k[a>>2]|0;i=k[a+4>>2]|0;a=b+(i>>1)|0;if(i&1)f=k[(k[a>>2]|0)+f>>2]|0;p[g>>3]=e;gd[f&15](a,c,d,g);u=h;return}function jg(a){a=a|0;return 48}function kg(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=k[a>>2]|0;if(b|0){c=a+4|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-16-b|0)>>>4)<<4);EA(b)}EA(a);return}function lg(a,b){a=a|0;b=b|0;var c=0;c=CA(24)|0;a=k[a>>2]|0;b=k[b>>2]|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=a;k[c+16>>2]=b;k[c+20>>2]=a;ng(c,a);return c|0}function mg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+8|0;h=k[a>>2]|0;if((k[f>>2]|0)-h>>4>>>0>=b>>>0)return;i=a+4|0;if(b>>>0>268435455){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}c=(k[i>>2]|0)-h|0;g=c>>4;d=CA(b<<4)|0;e=d+(g<<4)|0;g=e+(0-g<<4)|0;if((c|0)>0)nF(g|0,h|0,c|0)|0;k[a>>2]=g;k[i>>2]=e;k[f>>2]=d+(b<<4);if(!h)return;EA(h);return}function og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+4|0;d=k[j>>2]|0;c=k[a>>2]|0;e=(d-c>>4)+1|0;if(e>>>0>268435455){Sy(a);c=k[a>>2]|0;d=k[j>>2]|0}i=a+8|0;h=(k[i>>2]|0)-c|0;g=h>>3;g=h>>4>>>0<134217727?(g>>>0>>0?e:g):268435455;e=d-c>>4;do if(g)if(g>>>0>268435455){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}else{h=CA(g<<4)|0;break}else h=0;while(0);f=h+(e<<4)|0;k[f>>2]=k[b>>2];k[f+4>>2]=k[b+4>>2];k[f+8>>2]=k[b+8>>2];k[f+12>>2]=k[b+12>>2];d=d-c|0;e=f+(0-(d>>4)<<4)|0;if((d|0)>0)nF(e|0,c|0,d|0)|0;k[a>>2]=e;k[j>>2]=f+16;k[i>>2]=h+(g<<4);if(!c)return;EA(c);return}function pg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;h=u;u=u+16|0;g=h;f=k[a>>2]|0;i=k[a+4>>2]|0;a=b+(i>>1)|0;if(i&1)f=k[(k[a>>2]|0)+f>>2]|0;p[g>>3]=e;gd[f&15](a,c,d,g);u=h;return}function qg(a){a=a|0;return 88}function rg(a){a=a|0;var b=0;if(!a)return;Pq(k[a+676>>2]|0);Pq(k[a+680>>2]|0);b=k[a+684>>2]|0;if(b|0)FA(b);b=k[a+688>>2]|0;if(b|0)FA(b);sg(a+456|0);tg(a+136|0);vg(a+8|0);EA(a);return}function sg(a){a=a|0;var b=0;b=k[a+184>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+176>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+152>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+144>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+136>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+128>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+104>>2]|0);Pq(k[a+108>>2]|0);b=k[a+112>>2]|0;if(b|0)FA(b);b=k[a+116>>2]|0;if(b|0)FA(b);Pq(k[a+68>>2]|0);Pq(k[a+72>>2]|0);b=k[a+76>>2]|0;if(b|0)FA(b);b=k[a+80>>2]|0;if(b|0)FA(b);Pq(k[a+32>>2]|0);Pq(k[a+36>>2]|0);b=k[a+40>>2]|0;if(b|0)FA(b);b=k[a+44>>2]|0;if(!b){a=a+8|0;NA(a);return}FA(b);a=a+8|0;NA(a);return}function tg(a){a=a|0;var b=0;ug(a+156|0);b=k[a+148>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+140>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+132>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+36>>2]|0);Pq(k[a+40>>2]|0);b=k[a+44>>2]|0;if(b|0)FA(b);b=k[a+48>>2]|0;if(!b){a=a+12|0;NA(a);return}FA(b);a=a+12|0;NA(a);return}function ug(a){a=a|0;var b=0;b=k[a+72>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+64>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+56>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+40>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+32>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+24>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+16>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+8>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a>>2]|0;if(!b)return;Pq(k[b+-4>>2]|0);return}function vg(a){a=a|0;var b=0;b=k[a+80>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+72>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+64>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+56>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+48>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+24>>2]|0);Pq(k[a+28>>2]|0);b=k[a+32>>2]|0;if(b|0)FA(b);b=k[a+36>>2]|0;if(!b)return;FA(b);return}function wg(a,b){a=a|0;b=b|0;var c=0;c=CA(704)|0;yg(c,k[a>>2]|0,k[b>>2]|0);return c|0}function xg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function yg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+48|0;f=h;zg(a,a);d=a+664|0;i[d>>0]=0;g=a+668|0;k[g>>2]=-1;e=a+672|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;Dg(d,0,0);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=b;k[f+28>>2]=0;b=Oq((c<<2)+4|0)|0;k[f+12>>2]=b;if(!b){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[e>>2]=c;iF(b|0,0,(c<<2)+4|0)|0;Ag(d,f)|0;Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(b|0)FA(b);k[a+692>>2]=0;iF(k[a+676>>2]|0,0,(k[g>>2]<<2)+4|0)|0;b=k[a+680>>2]|0;if(!b){u=h;return}iF(b|0,0,k[g>>2]<<2|0)|0;u=h;return}function zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=b;i[a+8>>0]=0;k[a+12>>2]=0;c=a+20|0;i[c>>0]=0;k[a+24>>2]=-1;d=a+28|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;Dg(c,0,0);c=a+104|0;d=a+56|0;e=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));p[c>>3]=1.0;i[a+112>>0]=1;i[a+120>>0]=0;i[a+121>>0]=0;k[a+128>>2]=b;Bg(a+136|0);i[a+440>>0]=0;i[a+441>>0]=0;k[a+448>>2]=b;Cg(a+456|0);i[a+656>>0]=0;i[a+657>>0]=0;return}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(i[b>>0]|0){c=a+12|0;d=b+12|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+8|0;e=b+8|0;c=k[d>>2]|0;k[d>>2]=k[e>>2];k[e>>2]=c;e=a+4|0;c=b+4|0;d=k[e>>2]|0;k[e>>2]=k[c>>2];k[c>>2]=d;c=a+16|0;d=b+16|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+20|0;e=b+20|0;c=k[d>>2]|0;k[d>>2]=k[e>>2];k[e>>2]=c;e=a+24|0;c=b+24|0;d=k[e>>2]|0;k[e>>2]=k[c>>2];k[c>>2]=d;c=a+28|0;d=b+28|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+32|0;b=b+32|0;e=k[d>>2]|0;k[d>>2]=k[b>>2];k[b>>2]=e;return a|0}if((a|0)==(b|0))return a|0;Dg(a,k[b+8>>2]|0,k[b+4>>2]|0);c=a+16|0;d=k[c>>2]|0;if(d|0){Pq(d);k[c>>2]=0}if(k[b+16>>2]|0){Fg(a,b);return a|0}c=k[b+12>>2]|0;d=c+(k[a+4>>2]<<2)+4-c|0;if(d|0)nF(k[a+12>>2]|0,c|0,d|0)|0;c=a+20|0;e=b+28|0;Eg(c,k[e>>2]|0,0.0);if((k[e>>2]|0)<=0)return a|0;d=a+28|0;e=k[d>>2]|0;if(!e)return a|0;nF(k[c>>2]|0,k[b+20>>2]|0,e<<3|0)|0;c=k[d>>2]|0;if(!c)return a|0;nF(k[a+24>>2]|0,k[b+24>>2]|0,c<<2|0)|0;return a|0}function Bg(a){a=a|0;var b=0,c=0,d=0;i[a>>0]=0;b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;KA(b,35588,0);b=a+24|0;i[b>>0]=0;k[a+28>>2]=-1;c=a+32|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;Dg(b,0,0);i[a+96>>0]=0;b=a+212|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;i[a+248>>0]=0;b=a+280|0;c=a+100|0;d=c+104|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));p[b>>3]=1.0;k[a+296>>2]=1;k[a+252>>2]=16;k[a+256>>2]=1;k[a+260>>2]=128;k[a+264>>2]=16;k[a+268>>2]=8;k[a+272>>2]=20;return}function Cg(a){a=a|0;var b=0,c=0;i[a>>0]=0;i[a+1>>0]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;KA(b,35588,0);b=a+20|0;i[b>>0]=0;k[a+24>>2]=-1;c=a+28|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;Dg(b,0,0);b=a+56|0;i[b>>0]=0;k[a+60>>2]=-1;c=a+64|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;Dg(b,0,0);b=a+92|0;i[b>>0]=0;k[a+96>>2]=-1;c=a+100|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;Dg(b,0,0);b=a+128|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;i[a+168>>0]=1;a=a+176|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;j[a+16>>1]=0;return}function Dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a+8>>2]=b;k[a+28>>2]=0;e=a+4|0;d=k[e>>2]|0;do if((d|0)!=(c|0)|(d|0)==0){b=a+12|0;Pq(k[b>>2]|0);d=Oq((c<<2)+4|0)|0;k[b>>2]=d;if(!d){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}else{k[e>>2]=c;break}}while(0);b=a+16|0;d=k[b>>2]|0;if(!d){a=a+12|0;a=k[a>>2]|0;c=c<<2;c=c+4|0;iF(a|0,0,c|0)|0;return}Pq(d);k[b>>2]=0;c=k[e>>2]|0;a=a+12|0;a=k[a>>2]|0;c=c<<2;c=c+4|0;iF(a|0,0,c|0)|0;return}function Eg(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+12|0;if((k[n>>2]|0)>=(b|0)){n=a+8|0;k[n>>2]=b;return}l=~~(+(b|0)*c);m=l+b|0;if((l|0)<0){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}i=DA(m>>>0>536870911?-1:m<<3)|0;j=DA(m>>>0>1073741823?-1:m<<2)|0;l=a+8|0;d=k[l>>2]|0;d=(d|0)<(m|0)?d:m;if((d|0)>0){h=k[a>>2]|0;nF(i|0,h|0,d<<3|0)|0;e=a+4|0;f=k[e>>2]|0;nF(j|0,f|0,d<<2|0)|0;d=e;e=f;g=h}else{h=k[a>>2]|0;d=a+4|0;f=k[d>>2]|0;e=f;g=h}k[a>>2]=i;k[d>>2]=j;k[n>>2]=m;if(e|0)FA(f);if(!g){n=l;k[n>>2]=b;return}FA(h);n=l;k[n>>2]=b;return}function Fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=u;u=u+48|0;C=E;e=b+4|0;D=k[e>>2]|0;if(i[b>>0]|0){d=b+8|0;Dg(a,k[d>>2]|0,D);w=a+28|0;k[w>>2]=0;x=a+12|0;y=a+4|0;iF(k[x>>2]|0,0,(k[y>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[y>>2]<<2|0)|0;C=k[d>>2]|0;B=k[e>>2]|0;Gg(a,((C|0)<(B|0)?B:C)<<1);a:do if((D|0)>0){s=b+20|0;t=b+24|0;v=b+12|0;q=b+16|0;r=a+20|0;o=a+24|0;m=0;b:while(1){e=k[x>>2]|0;f=k[e+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){c=15;break}n=m;m=m+1|0;c=e+(m<<2)|0;if(k[c>>2]|0){c=17;break}k[c>>2]=f;j=k[s>>2]|0;l=k[t>>2]|0;c=k[v>>2]|0;b=k[c+(n<<2)>>2]|0;d=k[q>>2]|0;if(!d)h=k[c+(m<<2)>>2]|0;else h=(k[d+(n<<2)>>2]|0)+b|0;c:do if((b|0)<(h|0)){if((f|0)!=(k[w>>2]|0)){c=23;break b}while(1){g=+p[j+(b<<3)>>3];c=k[l+(b<<2)>>2]|0;d=e+(m<<2)|0;if((f|0)!=(k[e+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(c|0):0){c=26;break b}k[d>>2]=f+1;B=k[w>>2]|0;Eg(r,B+1|0,1.0);C=k[r>>2]|0;p[C+(B<<3)>>3]=0.0;k[(k[o>>2]|0)+(B<<2)>>2]=c;p[C+(f<<3)>>3]=g;b=b+1|0;if((b|0)>=(h|0))break c;e=k[x>>2]|0;f=k[e+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){c=23;break b}}}while(0);if((m|0)>=(D|0))break a}if((c|0)==15)Oa(16047,15958,414,16152);else if((c|0)==17)Oa(16161,15958,415,16152);else if((c|0)==23)Oa(16249,15958,392,16348);else if((c|0)==26)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=E;return}f=k[w>>2]|0;e=k[y>>2]|0;if((e|0)<=-1){u=E;return}b=k[x>>2]|0;c=e;while(1){if(k[b+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0)){u=E;return}do{c=c+1|0;k[b+(c<<2)>>2]=f}while((c|0)<(k[y>>2]|0));u=E;return}c=b+8|0;w=k[c>>2]|0;i[C>>0]=0;B=C+4|0;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;k[B+12>>2]=0;k[B+16>>2]=0;k[B+20>>2]=0;k[B+24>>2]=0;k[B+28>>2]=0;k[C+8>>2]=w;w=C+28|0;k[w>>2]=0;d=Oq((D<<2)+4|0)|0;k[C+12>>2]=d;if(!d){E=Kb(4)|0;cF(E);Cc(E|0,2032,79)}k[B>>2]=D;z=C+16|0;v=k[c>>2]|0;t=k[e>>2]|0;x=C+12|0;iF(d|0,0,(D<<2)+4|0)|0;Gg(C,((v|0)<(t|0)?t:v)<<1);d:do if((D|0)>0){s=b+20|0;t=b+24|0;v=b+12|0;q=b+16|0;r=C+20|0;o=C+24|0;m=0;e:while(1){e=k[x>>2]|0;f=k[e+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){c=42;break}n=m;m=m+1|0;c=e+(m<<2)|0;if(k[c>>2]|0){c=44;break}k[c>>2]=f;j=k[s>>2]|0;l=k[t>>2]|0;c=k[v>>2]|0;b=k[c+(n<<2)>>2]|0;d=k[q>>2]|0;if(!d)h=k[c+(m<<2)>>2]|0;else h=(k[d+(n<<2)>>2]|0)+b|0;f:do if((b|0)<(h|0)){if((f|0)!=(k[w>>2]|0)){c=50;break e}while(1){g=+p[j+(b<<3)>>3];c=k[l+(b<<2)>>2]|0;d=e+(m<<2)|0;if((f|0)!=(k[e+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(c|0):0){c=53;break e}k[d>>2]=f+1;d=k[w>>2]|0;Eg(r,d+1|0,1.0);e=k[r>>2]|0;p[e+(d<<3)>>3]=0.0;k[(k[o>>2]|0)+(d<<2)>>2]=c;p[e+(f<<3)>>3]=g;b=b+1|0;if((b|0)>=(h|0))break f;e=k[x>>2]|0;f=k[e+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){c=50;break e}}}while(0);if((m|0)>=(D|0))break d}if((c|0)==42)Oa(16047,15958,414,16152);else if((c|0)==44)Oa(16161,15958,415,16152);else if((c|0)==50)Oa(16249,15958,392,16348);else if((c|0)==53)Oa(16371,15958,393,16348)}while(0);if((k[C+16>>2]|0)==0?(A=k[w>>2]|0,y=k[B>>2]|0,(y|0)>-1):0){e=k[x>>2]|0;c=y;while(1){if(k[e+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)<(y|0))do{c=c+1|0;k[e+(c<<2)>>2]=A}while((c|0)<(k[B>>2]|0))}i[C>>0]=1;Ag(a,C)|0;Pq(k[x>>2]|0);Pq(k[z>>2]|0);c=k[C+20>>2]|0;if(c|0)FA(c);c=k[C+24>>2]|0;if(c|0)FA(c);u=E;return}function Gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(k[a+16>>2]|0)Oa(15880,15958,264,16039);j=a+20|0;c=k[a+28>>2]|0;h=c+b|0;i=a+32|0;if((h|0)<=(k[i>>2]|0))return;f=DA(h>>>0>536870911?-1:h<<3)|0;g=DA(h>>>0>1073741823?-1:h<<2)|0;b=(c|0)<(h|0)?c:h;if((b|0)>0){e=k[j>>2]|0;nF(f|0,e|0,b<<3|0)|0;c=a+24|0;a=k[c>>2]|0;nF(g|0,a|0,b<<2|0)|0;b=c;c=a;d=e}else{e=k[j>>2]|0;b=a+24|0;a=k[b>>2]|0;c=a;d=e}k[j>>2]=f;k[b>>2]=g;k[i>>2]=h;if(c|0)FA(a);if(!d)return;FA(e);return}function Hg(a){a=a|0;var b=0;b=CA(704)|0;Jg(b,k[a>>2]|0);return b|0}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;k[d>>2]=b;b=Pc[a&127](d)|0;u=c;return b|0}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=u;u=u+16|0;f=c+4|0;e=c;zg(a,a);d=a+664|0;h=k[b+12>>2]|0;g=k[b+16>>2]|0;i[d>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;Dg(d,h,g);k[f>>2]=k[b>>2];k[e>>2]=k[b+4>>2];Kg(f,e,d,c+8|0);u=c;return}function Kg(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0.0;t=u;u=u+48|0;s=t+8|0;o=t;q=t+44|0;j=c+8|0;f=k[j>>2]|0;l=c+4|0;e=k[l>>2]|0;i[s>>0]=0;d=s+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[s+8>>2]=e;k[s+28>>2]=0;e=Oq((f<<2)+4|0)|0;k[s+12>>2]=e;if(!e){t=Kb(4)|0;cF(t);Cc(t|0,2032,79)}k[d>>2]=f;m=s+16|0;g=k[a>>2]|0;h=k[b>>2]|0;n=s+12|0;iF(e|0,0,(f<<2)+4|0)|0;if((g|0)!=(h|0)){k[o>>2]=0;h=o+4|0;k[h>>2]=0;Ef(o,f);d=k[h>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[o>>2]|0,0,d<<2|0)|0;d=k[a>>2]|0;f=k[b>>2]|0;a:do if((d|0)!=(f|0)){g=k[o>>2]|0;while(1){e=k[d>>2]|0;if(!((e|0)>-1?(e|0)<(k[j>>2]|0):0)){d=13;break}v=k[d+4>>2]|0;if(!((v|0)>-1?(v|0)<(k[l>>2]|0):0)){d=13;break}if((k[h>>2]|0)<=(e|0)){d=15;break}v=g+(e<<2)|0;k[v>>2]=(k[v>>2]|0)+1;d=d+16|0;if((d|0)==(f|0))break a}if((d|0)==13)Oa(16510,15958,934,16587);else if((d|0)==15)Oa(16605,15693,425,29764)}while(0);Og(s,o);d=k[a>>2]|0;g=k[b>>2]|0;b:do if((d|0)!=(g|0)){h=k[s+16>>2]|0;j=k[n>>2]|0;l=k[s+24>>2]|0;a=k[s+20>>2]|0;if(!h)Oa(16634,15958,891,16650);else r=d;while(1){v=k[r>>2]|0;d=h+(v<<2)|0;e=k[d>>2]|0;f=k[j+(v<<2)>>2]|0;if((e|0)>((k[j+(v+1<<2)>>2]|0)-f|0))break;b=k[r+4>>2]|0;w=+p[r+8>>3];k[d>>2]=e+1;v=f+e|0;k[l+(v<<2)>>2]=b;p[a+(v<<3)>>3]=w;r=r+16|0;if((r|0)==(g|0))break b}Oa(16673,15958,892,16650)}while(0);Lg(s,q);d=k[o>>2]|0;if(d|0)Pq(k[d+-4>>2]|0)}Mg(c,s)|0;Pq(k[n>>2]|0);Pq(k[m>>2]|0);d=k[s+20>>2]|0;if(d|0)FA(d);d=k[s+24>>2]|0;if(!d){u=t;return}FA(d);u=t;return}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+16|0;y=B;if(!(k[a+16>>2]|0))Oa(16634,15958,1019,16743);b=k[a+8>>2]|0;k[y>>2]=0;x=y+4|0;k[x>>2]=0;Ef(y,b);b=k[x>>2]|0;if((b|0)<=-1)Oa(11919,12068,74,12145);if(b|0)iF(k[y>>2]|0,-1,b<<2|0)|0;r=a+4|0;b=k[r>>2]|0;s=a+16|0;t=k[s>>2]|0;v=a+12|0;w=k[v>>2]|0;a:do if((b|0)>0){n=a+24|0;o=k[y>>2]|0;q=a+20|0;j=0;m=0;b:while(1){l=w+(m<<2)|0;b=k[l>>2]|0;i=k[t+(m<<2)>>2]|0;h=i+b|0;if((i|0)>0){i=k[n>>2]|0;c=j;do{d=k[i+(b<<2)>>2]|0;if(!((d|0)>-1?(k[x>>2]|0)>(d|0):0)){b=14;break b}e=o+(d<<2)|0;f=k[e>>2]|0;g=k[q>>2]|0;if((f|0)<(j|0)){p[g+(c<<3)>>3]=+p[g+(b<<3)>>3];k[i+(c<<2)>>2]=d;if((k[x>>2]|0)<=(d|0)){b=18;break b}k[e>>2]=c;c=c+1|0}else{f=g+(f<<3)|0;p[f>>3]=+p[f>>3]+ +p[g+(b<<3)>>3]}b=b+1|0}while((b|0)<(h|0))}else c=j;k[l>>2]=j;m=m+1|0;b=k[r>>2]|0;if((m|0)>=(b|0)){z=c;A=b;break a}else j=c}if((b|0)==14)Oa(16605,15693,425,29764);else if((b|0)==18)Oa(16605,15693,425,29764)}else{z=0;A=b}while(0);k[w+(A<<2)>>2]=z;Pq(t);k[s>>2]=0;Eg(a+20|0,k[(k[v>>2]|0)+(k[r>>2]<<2)>>2]|0,0.0);b=k[y>>2]|0;if(!b){u=B;return}Pq(k[b+-4>>2]|0);u=B;return}function Mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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=u;u=u+48|0;H=J+8|0;o=J;w=b+4|0;z=k[w>>2]|0;c=k[b+8>>2]|0;i[H>>0]=0;E=H+4|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[E+16>>2]=0;k[E+20>>2]=0;k[E+24>>2]=0;k[E+28>>2]=0;F=H+8|0;k[F>>2]=z;z=H+28|0;k[z>>2]=0;l=Oq((c<<2)+4|0)|0;k[H+12>>2]=l;if(!l){J=Kb(4)|0;cF(J);Cc(J|0,2032,79)}k[E>>2]=c;G=H+16|0;D=H+12|0;iF(l|0,0,(c<<2)+4|0)|0;if((c|0)<=-1)Oa(14697,13988,163,14058);if(c|0)iF(l|0,0,c<<2|0)|0;c=k[w>>2]|0;if((c|0)>0){h=k[b+24>>2]|0;j=k[b+12>>2]|0;g=k[b+16>>2]|0;if(!g){f=0;do{d=k[j+(f<<2)>>2]|0;f=f+1|0;e=k[j+(f<<2)>>2]|0;if((d|0)<(e|0)){c=d;do{v=l+(k[h+(c<<2)>>2]<<2)|0;k[v>>2]=(k[v>>2]|0)+1;c=c+1|0}while((c|0)!=(e|0));c=k[w>>2]|0}}while((f|0)<(c|0))}else{f=0;do{d=k[j+(f<<2)>>2]|0;v=k[g+(f<<2)>>2]|0;e=v+d|0;if((v|0)>0){c=d;do{v=l+(k[h+(c<<2)>>2]<<2)|0;k[v>>2]=(k[v>>2]|0)+1;c=c+1|0}while((c|0)<(e|0));c=k[w>>2]|0}f=f+1|0}while((f|0)<(c|0))}}c=k[E>>2]|0;k[o>>2]=0;v=o+4|0;k[v>>2]=0;Ef(o,c);c=k[E>>2]|0;g=k[D>>2]|0;a:do if((c|0)>0){f=k[o>>2]|0;e=0;c=0;while(1){t=g+(e<<2)|0;d=k[t>>2]|0;k[t>>2]=c;if((k[v>>2]|0)<=(e|0))break;k[f+(e<<2)>>2]=c;c=d+c|0;e=e+1|0;d=k[E>>2]|0;if((e|0)>=(d|0)){n=c;m=d;break a}}Oa(16605,15693,408,29907)}else{n=0;m=c}while(0);k[g+(m<<2)>>2]=n;t=H+20|0;Eg(t,n,0.0);c=k[w>>2]|0;do if((c|0)>0){r=k[o>>2]|0;s=H+24|0;n=k[s>>2]|0;o=k[t>>2]|0;j=k[b+20>>2]|0;l=k[b+24>>2]|0;m=k[b+12>>2]|0;g=k[b+16>>2]|0;b=o;q=n;h=(g|0)==0;f=0;b:while(1){d=k[m+(f<<2)>>2]|0;if(h)e=k[m+(f+1<<2)>>2]|0;else e=(k[g+(f<<2)>>2]|0)+d|0;if((d|0)<(e|0)){c=d;do{d=k[l+(c<<2)>>2]|0;if(!((d|0)>-1?(k[v>>2]|0)>(d|0):0)){c=32;break b}K=r+(d<<2)|0;d=k[K>>2]|0;k[K>>2]=d+1;k[n+(d<<2)>>2]=f;p[o+(d<<3)>>3]=+p[j+(c<<3)>>3];c=c+1|0}while((c|0)<(e|0));c=k[w>>2]|0}f=f+1|0;if((f|0)>=(c|0)){c=34;break}}if((c|0)==32)Oa(16605,15693,408,29907);else if((c|0)==34){I=s;x=s;y=t;A=b;B=q;C=r;break}}else{B=H+24|0;I=B;x=B;y=t;A=k[t>>2]|0;B=k[B>>2]|0;C=k[o>>2]|0}while(0);w=a+12|0;c=k[w>>2]|0;k[w>>2]=k[D>>2];k[D>>2]=c;w=a+8|0;K=k[w>>2]|0;k[w>>2]=k[F>>2];k[F>>2]=K;F=a+4|0;K=k[F>>2]|0;k[F>>2]=k[E>>2];k[E>>2]=K;E=a+16|0;K=k[E>>2]|0;k[E>>2]=k[G>>2];k[G>>2]=K;K=a+20|0;E=k[K>>2]|0;k[K>>2]=A;k[y>>2]=E;E=a+24|0;K=k[E>>2]|0;k[E>>2]=B;k[x>>2]=K;K=a+28|0;E=k[K>>2]|0;k[K>>2]=k[z>>2];k[z>>2]=E;E=a+32|0;K=H+32|0;F=k[E>>2]|0;k[E>>2]=k[K>>2];k[K>>2]=F;if(C){Pq(k[C+-4>>2]|0);c=k[D>>2]|0}Pq(c);Pq(k[G>>2]|0);c=k[H+20>>2]|0;if(c|0)FA(c);c=k[I>>2]|0;if(!c){u=J;return a|0}FA(c);u=J;return a|0}function Ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!((b|0)>-1&(c|0)==1))Oa(12303,12702,285,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>1073741823){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}e=b<<2;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;l=k[a+16>>2]|0;v=a+4|0;n=k[v>>2]|0;c=n<<2;if(l|0){s=Oq(c+4|0)|0;t=s;if(!s){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}a:do if((n|0)>0){i=k[a+12>>2]|0;j=k[b>>2]|0;h=k[b+4>>2]|0;g=0;c=0;while(1){k[s+(g<<2)>>2]=c;d=g;g=g+1|0;e=k[l+(d<<2)>>2]|0;f=(k[i+(g<<2)>>2]|0)-(k[i+(d<<2)>>2]|0)-e|0;if((h|0)<=(d|0))break;b=k[j+(d<<2)>>2]|0;c=e+c+((b|0)<(f|0)?f:b)|0;if((g|0)>=(n|0)){m=c;break a}}Oa(16605,15693,162,29907)}else m=0;while(0);k[s+(n<<2)>>2]=m;r=a+20|0;Eg(r,m,0.0);d=k[v>>2]|0;q=a+12|0;if((d|0)>0){c=k[q>>2]|0;o=a+16|0;n=a+24|0;do{g=d;d=d+-1|0;i=s+(d<<2)|0;f=k[i>>2]|0;j=c+(d<<2)|0;e=k[j>>2]|0;if((f|0)>(e|0)?(u=k[(k[o>>2]|0)+(d<<2)>>2]|0,(u|0)>0):0){l=k[n>>2]|0;m=k[r>>2]|0;h=u;do{v=h;h=h+-1|0;k[l+(f+h<<2)>>2]=k[l+(e+h<<2)>>2];e=k[j>>2]|0;f=k[i>>2]|0;p[m+(f+h<<3)>>3]=+p[m+(e+h<<3)>>3]}while((v|0)>1)}}while((g|0)>1)}else c=k[q>>2]|0;k[q>>2]=t;Pq(c);return}t=Oq(c)|0;m=a+16|0;k[m>>2]=t;if(!t){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}b:do if((n|0)>0){f=b+4|0;g=k[b>>2]|0;h=a+12|0;d=0;c=0;e=0;while(1){k[t+(d<<2)>>2]=e;if((k[f>>2]|0)<=(d|0))break;u=k[g+(d<<2)>>2]|0;r=k[h>>2]|0;s=d;d=d+1|0;e=u+e+(k[r+(d<<2)>>2]|0)-(k[r+(s<<2)>>2]|0)|0;c=u+c|0;if((d|0)>=(k[v>>2]|0)){i=c;break b}}Oa(16605,15693,162,29907)}else i=0;while(0);s=a+20|0;c=k[a+28>>2]|0;h=c+i|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>536870911?-1:h<<3)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[s>>2]|0;nF(j|0,g|0,c<<3|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[s>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[s>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}e=k[v>>2]|0;r=k[a+12>>2]|0;if((e|0)>0){c=k[m>>2]|0;q=a+24|0;d=k[r+(e<<2)>>2]|0;do{n=e;e=e+-1|0;o=r+(e<<2)|0;g=k[o>>2]|0;m=d-g|0;if((m|0)>0){i=k[q>>2]|0;j=t+(e<<2)|0;l=k[s>>2]|0;h=m;f=k[j>>2]|0;d=g;do{a=h;h=h+-1|0;k[i+(f+h<<2)>>2]=k[i+(d+h<<2)>>2];d=k[o>>2]|0;f=k[j>>2]|0;p[l+(f+h<<3)>>3]=+p[l+(d+h<<3)>>3]}while((a|0)>1)}else{d=g;f=k[t+(e<<2)>>2]|0}k[o>>2]=f;k[c+(e<<2)>>2]=m}while((n|0)>1);e=k[v>>2]|0}else c=k[m>>2]|0;d=e+-1|0;c=(k[c+(d<<2)>>2]|0)+(k[r+(d<<2)>>2]|0)|0;if((e|0)<=0)Oa(16605,15693,162,29907);if((k[b+4>>2]|0)<(e|0))Oa(16605,15693,162,29907);k[r+(e<<2)>>2]=c+(k[(k[b>>2]|0)+(d<<2)>>2]|0);Eg(s,k[r+(k[v>>2]<<2)>>2]|0,0.0);return}function Pg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=u;u=u+32|0;e=h+8|0;f=h+4|0;g=h;d=a+8|0;b=k[d>>2]|0;if((b|0)!=(k[a+4>>2]|0))Oa(16762,15958,746,16810);c=a+20|0;Eg(c,b,0.0);b=k[d>>2]|0;k[e>>2]=k[a+24>>2];k[e+4>>2]=b;if((b|0)<=-1)Oa(14697,13988,163,14058);k[f>>2]=0;k[g>>2]=b+-1;Rg(e,b,f,g)|0;c=k[c>>2]|0;d=k[d>>2]|0;if((d|0)<=-1)Oa(14697,13988,163,14058);if(d|0){b=0;do{p[c+(b<<3)>>3]=1.0;b=b+1|0}while((b|0)!=(d|0))}b=d+1|0;k[e>>2]=k[a+12>>2];k[e+4>>2]=b;if((d|0)>-2){k[f>>2]=0;k[g>>2]=d;Rg(e,b,f,g)|0;g=a+16|0;Pq(k[g>>2]|0);k[g>>2]=0;u=h;return}else Oa(14697,13988,163,14058)}function Qg(a,b){a=a|0;b=b|0;var c=0;zg(a,a);c=a+664|0;i[c>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;Ag(c,b)|0;return}function Rg(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;i=k[d>>2]|0;h=(b|0)==1?i:k[c>>2]|0;f=i-h|0;d=(f|0)/(((b|0)<2?1:b+-1|0)|0)|0;e=(f|0)>-1?f:0-f|0;c=e+1|0;e=(((i|0)>=(h|0)?b:0-b|0)+f|0)/(((e|0)==-1?1:c)|0)|0;if((b|0)<=1)if((b|0)>-1)g=0;else Oa(11919,12068,74,12145);else g=(c|0)<(b|0)&1;if((k[a+4>>2]|0)!=(b|0))Oa(14445,14320,257,12780);f=k[a>>2]|0;if((b|0)<=0)return a|0;if(!(g<<24>>24)){c=0;do{i=(aa(c,d)|0)+h|0;k[f+(c<<2)>>2]=i;c=c+1|0}while((c|0)!=(b|0));return a|0}else{c=0;do{k[f+(c<<2)>>2]=((c|0)/(e|0)|0)+h;c=c+1|0}while((c|0)!=(b|0));return a|0}return 0}function Sg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+704|0;d=e;cd[a&63](d,b,c);b=CA(704)|0;Tg(b,d);Pq(k[d+676>>2]|0);Pq(k[d+680>>2]|0);a=k[d+684>>2]|0;if(a|0)FA(a);a=k[d+688>>2]|0;if(a|0)FA(a);sg(d+456|0);tg(d+136|0);vg(d+8|0);u=e;return b|0}function Tg(a,b){a=a|0;b=b|0;var c=0;zg(a,a);c=a+664|0;i[c>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;Ag(c,b+664|0)|0;return}function Ug(a,b){a=a|0;b=b|0;var c=0,d=0;d=u;u=u+704|0;c=d;Nc[a&63](c,b);b=CA(704)|0;Tg(b,c);Pq(k[c+676>>2]|0);Pq(k[c+680>>2]|0);a=k[c+684>>2]|0;if(a|0)FA(a);a=k[c+688>>2]|0;if(a|0)FA(a);sg(c+456|0);tg(c+136|0);vg(c+8|0);u=d;return b|0}function Vg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=u;u=u+48|0;C=E+8|0;n=E;t=k[b+4>>2]|0;v=t+4|0;x=k[v>>2]|0;b=k[t+8>>2]|0;i[C>>0]=0;z=C+4|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;w=C+8|0;k[w>>2]=x;x=C+28|0;k[x>>2]=0;j=Oq((b<<2)+4|0)|0;k[C+12>>2]=j;if(!j){E=Kb(4)|0;cF(E);Cc(E|0,2032,79)}k[z>>2]=b;B=C+16|0;y=C+12|0;iF(j|0,0,(b<<2)+4|0)|0;if((b|0)<=-1)Oa(14697,13988,163,14058);if(b|0)iF(j|0,0,b<<2|0)|0;b=k[v>>2]|0;if((b|0)>0){g=k[t+24>>2]|0;h=k[t+12>>2]|0;f=k[t+16>>2]|0;if(!f){e=0;do{c=k[h+(e<<2)>>2]|0;e=e+1|0;d=k[h+(e<<2)>>2]|0;if((c|0)<(d|0)){b=c;do{s=j+(k[g+(b<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;b=b+1|0}while((b|0)!=(d|0));b=k[v>>2]|0}}while((e|0)<(b|0))}else{e=0;do{c=k[h+(e<<2)>>2]|0;s=k[f+(e<<2)>>2]|0;d=s+c|0;if((s|0)>0){b=c;do{s=j+(k[g+(b<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;b=b+1|0}while((b|0)<(d|0));b=k[v>>2]|0}e=e+1|0}while((e|0)<(b|0))}}b=k[z>>2]|0;k[n>>2]=0;s=n+4|0;k[s>>2]=0;Ef(n,b);b=k[z>>2]|0;f=k[y>>2]|0;a:do if((b|0)>0){e=k[n>>2]|0;d=0;b=0;while(1){r=f+(d<<2)|0;c=k[r>>2]|0;k[r>>2]=b;if((k[s>>2]|0)<=(d|0))break;k[e+(d<<2)>>2]=b;b=c+b|0;d=d+1|0;c=k[z>>2]|0;if((d|0)>=(c|0)){m=b;l=c;break a}}Oa(16605,15693,408,29907)}else{m=0;l=b}while(0);k[f+(l<<2)>>2]=m;r=C+20|0;Eg(r,m,0.0);b=k[v>>2]|0;b:do if((b|0)>0){o=k[n>>2]|0;q=C+24|0;l=k[t+20>>2]|0;m=k[t+24>>2]|0;n=k[t+12>>2]|0;h=k[t+16>>2]|0;j=(h|0)==0;g=0;c:while(1){c=k[n+(g<<2)>>2]|0;if(j)f=k[n+(g+1<<2)>>2]|0;else f=(k[h+(g<<2)>>2]|0)+c|0;if((c|0)<(f|0)){e=k[q>>2]|0;d=k[r>>2]|0;b=c;do{c=k[m+(b<<2)>>2]|0;if(!((c|0)>-1?(k[s>>2]|0)>(c|0):0))break c;c=o+(c<<2)|0;t=k[c>>2]|0;k[c>>2]=t+1;k[e+(t<<2)>>2]=g;p[d+(t<<3)>>3]=+p[l+(b<<3)>>3];b=b+1|0}while((b|0)<(f|0));b=k[v>>2]|0}g=g+1|0;if((g|0)>=(b|0)){D=q;A=o;break b}}Oa(16605,15693,408,29907)}else{D=C+24|0;A=k[n>>2]|0}while(0);t=a+12|0;b=k[t>>2]|0;k[t>>2]=k[y>>2];k[y>>2]=b;t=a+8|0;v=k[t>>2]|0;k[t>>2]=k[w>>2];k[w>>2]=v;v=a+4|0;w=k[v>>2]|0;k[v>>2]=k[z>>2];k[z>>2]=w;w=a+16|0;z=k[w>>2]|0;k[w>>2]=k[B>>2];k[B>>2]=z;z=a+20|0;w=k[z>>2]|0;k[z>>2]=k[r>>2];k[r>>2]=w;w=a+24|0;z=k[w>>2]|0;k[w>>2]=k[D>>2];k[D>>2]=z;z=a+28|0;w=k[z>>2]|0;k[z>>2]=k[x>>2];k[x>>2]=w;w=a+32|0;z=C+32|0;x=k[w>>2]|0;k[w>>2]=k[z>>2];k[z>>2]=x;if(A){Pq(k[A+-4>>2]|0);b=k[y>>2]|0}Pq(b);Pq(k[B>>2]|0);b=k[C+20>>2]|0;if(b|0)FA(b);b=k[D>>2]|0;if(!b){u=E;return a|0}FA(b);u=E;return a|0}function Wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+704|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=CA(704)|0;Tg(a,d);Pq(k[d+676>>2]|0);Pq(k[d+680>>2]|0);c=k[d+684>>2]|0;if(c|0)FA(c);c=k[d+688>>2]|0;if(c|0)FA(c);sg(d+456|0);tg(d+136|0);vg(d+8|0);u=e;return a|0}function Xg(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function Yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(!(d&1)){d=c;e=+Vc[d&7](a);return +e}else{d=k[(k[a>>2]|0)+c>>2]|0;e=+Vc[d&7](a);return +e}return 0.0}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;I=u;u=u+48|0;G=I;e=k[b+4>>2]|0;d=b+20|0;H=k[d>>2]|0;if(i[b>>0]|0){z=b+16|0;Dg(a,k[z>>2]|0,H);A=a+28|0;k[A>>2]=0;B=a+12|0;C=a+4|0;iF(k[B>>2]|0,0,(k[C>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[C>>2]<<2|0)|0;G=k[z>>2]|0;F=k[d>>2]|0;Gg(a,((G|0)<(F|0)?F:G)<<1);a:do if((H|0)>0){y=e;t=b+12|0;v=y+20|0;w=y+24|0;x=y+12|0;y=y+16|0;r=b+8|0;s=a+20|0;q=a+24|0;n=0;b:while(1){c=k[B>>2]|0;d=k[c+(n<<2)>>2]|0;if((d|0)!=(k[A>>2]|0)){c=15;break}o=n;n=n+1|0;c=c+(n<<2)|0;if(k[c>>2]|0){c=17;break}k[c>>2]=d;d=(k[t>>2]|0)+o|0;l=k[v>>2]|0;m=k[w>>2]|0;e=k[x>>2]|0;c=k[e+(d<<2)>>2]|0;b=k[y>>2]|0;if(!b)h=k[e+(d+1<<2)>>2]|0;else h=(k[b+(d<<2)>>2]|0)+c|0;d=k[r>>2]|0;j=(k[z>>2]|0)+d|0;c:do if((c|0)<(h|0))do{if((k[m+(c<<2)>>2]|0)>=(d|0))break c;c=c+1|0}while((c|0)<(h|0));while(0);d:do if((c|0)<(h|0))do{d=k[m+(c<<2)>>2]|0;if((d|0)>=(j|0))break d;g=+p[l+(c<<3)>>3];d=d-(k[r>>2]|0)|0;e=k[B>>2]|0;b=e+(n<<2)|0;f=k[b>>2]|0;if((f|0)!=(k[A>>2]|0)){c=27;break b}if((f|0)!=(k[e+(o<<2)>>2]|0)?(k[(k[q>>2]|0)+(f+-1<<2)>>2]|0)>=(d|0):0){c=30;break b}k[b>>2]=f+1;F=k[A>>2]|0;Eg(s,F+1|0,1.0);G=k[s>>2]|0;p[G+(F<<3)>>3]=0.0;k[(k[q>>2]|0)+(F<<2)>>2]=d;p[G+(f<<3)>>3]=g;c=c+1|0}while((c|0)<(h|0));while(0);if((n|0)>=(H|0))break a}if((c|0)==15)Oa(16047,15958,414,16152);else if((c|0)==17)Oa(16161,15958,415,16152);else if((c|0)==27)Oa(16249,15958,392,16348);else if((c|0)==30)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=I;return}f=k[A>>2]|0;e=k[C>>2]|0;if((e|0)<=-1){u=I;return}b=k[B>>2]|0;c=e;while(1){if(k[b+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0)){u=I;return}do{c=c+1|0;k[b+(c<<2)>>2]=f}while((c|0)<(k[C>>2]|0));u=I;return}z=b+16|0;A=k[z>>2]|0;i[G>>0]=0;D=G+4|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[D+16>>2]=0;k[D+20>>2]=0;k[D+24>>2]=0;k[D+28>>2]=0;k[G+8>>2]=A;A=G+28|0;k[A>>2]=0;c=Oq((H<<2)+4|0)|0;k[G+12>>2]=c;if(!c){I=Kb(4)|0;cF(I);Cc(I|0,2032,79)}k[D>>2]=H;E=G+16|0;y=k[z>>2]|0;x=k[d>>2]|0;B=G+12|0;iF(c|0,0,(H<<2)+4|0)|0;Gg(G,((y|0)<(x|0)?x:y)<<1);e:do if((H|0)>0){y=e;t=b+12|0;v=y+20|0;w=y+24|0;x=y+12|0;y=y+16|0;r=b+8|0;s=G+20|0;q=G+24|0;n=0;f:while(1){c=k[B>>2]|0;d=k[c+(n<<2)>>2]|0;if((d|0)!=(k[A>>2]|0)){c=45;break}o=n;n=n+1|0;c=c+(n<<2)|0;if(k[c>>2]|0){c=47;break}k[c>>2]=d;d=(k[t>>2]|0)+o|0;l=k[v>>2]|0;m=k[w>>2]|0;e=k[x>>2]|0;c=k[e+(d<<2)>>2]|0;b=k[y>>2]|0;if(!b)h=k[e+(d+1<<2)>>2]|0;else h=(k[b+(d<<2)>>2]|0)+c|0;d=k[r>>2]|0;j=(k[z>>2]|0)+d|0;g:do if((c|0)<(h|0))do{if((k[m+(c<<2)>>2]|0)>=(d|0))break g;c=c+1|0}while((c|0)<(h|0));while(0);h:do if((c|0)<(h|0))do{d=k[m+(c<<2)>>2]|0;if((d|0)>=(j|0))break h;g=+p[l+(c<<3)>>3];d=d-(k[r>>2]|0)|0;e=k[B>>2]|0;b=e+(n<<2)|0;f=k[b>>2]|0;if((f|0)!=(k[A>>2]|0)){c=57;break f}if((f|0)!=(k[e+(o<<2)>>2]|0)?(k[(k[q>>2]|0)+(f+-1<<2)>>2]|0)>=(d|0):0){c=60;break f}k[b>>2]=f+1;e=k[A>>2]|0;Eg(s,e+1|0,1.0);b=k[s>>2]|0;p[b+(e<<3)>>3]=0.0;k[(k[q>>2]|0)+(e<<2)>>2]=d;p[b+(f<<3)>>3]=g;c=c+1|0}while((c|0)<(h|0));while(0);if((n|0)>=(H|0))break e}if((c|0)==45)Oa(16047,15958,414,16152);else if((c|0)==47)Oa(16161,15958,415,16152);else if((c|0)==57)Oa(16249,15958,392,16348);else if((c|0)==60)Oa(16371,15958,393,16348)}while(0);if((k[G+16>>2]|0)==0?(F=k[A>>2]|0,C=k[D>>2]|0,(C|0)>-1):0){e=k[B>>2]|0;c=C;while(1){if(k[e+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)<(C|0))do{c=c+1|0;k[e+(c<<2)>>2]=F}while((c|0)<(k[D>>2]|0))}i[G>>0]=1;Ag(a,G)|0;Pq(k[B>>2]|0);Pq(k[E>>2]|0);c=k[G+20>>2]|0;if(c|0)FA(c);c=k[G+24>>2]|0;if(c|0)FA(c);u=I;return}function _g(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 g=0,h=0,i=0,j=0;i=u;u=u+704|0;h=i;g=k[a>>2]|0;j=k[a+4>>2]|0;a=b+(j>>1)|0;if(j&1)g=k[(k[a>>2]|0)+g>>2]|0;Tc[g&15](h,a,c,d,e,f);a=CA(704)|0;Tg(a,h);Pq(k[h+676>>2]|0);Pq(k[h+680>>2]|0);g=k[h+684>>2]|0;if(g|0)FA(g);g=k[h+688>>2]|0;if(g|0)FA(g);sg(h+456|0);tg(h+136|0);vg(h+8|0);u=i;return a|0}function $g(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;g=a+4|0;d=k[g>>2]|0;h=a+8|0;c=k[h>>2]|0;if((c|d|0)<=-1)Oa(11919,12068,74,12145);c=aa(c,d)|0;if((c|0)>0){iF(k[a>>2]|0,0,c<<3|0)|0;d=k[g>>2]|0}c=k[b+8>>2]|0;f=b+4|0;e=k[f>>2]|0;if(!((d|0)==(c|0)?(k[h>>2]|0)==(e|0):0)){mf(a,c,e);if((k[g>>2]|0)==(c|0)?(k[h>>2]|0)==(e|0):0)m=c;else Oa(12160,12207,721,12285)}else m=d;l=k[a>>2]|0;h=k[f>>2]|0;if((h|0)<=0)return;a=k[b+20>>2]|0;i=k[b+24>>2]|0;j=k[b+12>>2]|0;e=k[b+16>>2]|0;if(e|0){d=0;do{c=k[j+(d<<2)>>2]|0;b=k[e+(d<<2)>>2]|0;f=b+c|0;if((b|0)>0){g=aa(d,m)|0;do{p[l+((k[i+(c<<2)>>2]|0)+g<<3)>>3]=+p[a+(c<<3)>>3];c=c+1|0}while((c|0)<(f|0))}d=d+1|0}while((d|0)!=(h|0));return}f=0;g=k[j>>2]|0;do{c=f;f=f+1|0;d=g;g=k[j+(f<<2)>>2]|0;if((d|0)<(g|0)){e=aa(c,m)|0;c=d;do{p[l+((k[i+(c<<2)>>2]|0)+e<<3)>>3]=+p[a+(c<<3)>>3];c=c+1|0}while((c|0)!=(g|0))}}while((f|0)!=(h|0));return}function ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=sf(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function bh(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function ch(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function dh(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function eh(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;p[e>>3]=c;Nc[d&63](a,e);u=f;return}function fh(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(c=k[b+8>>2]|0,Dg(a,k[c+8>>2]|0,k[c+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}gh(a,b);return a|0}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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.0,Q=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0;X=u;u=u+48|0;U=X;d=k[b+4>>2]|0;c=b+8|0;e=k[c>>2]|0;W=k[e+4>>2]|0;if(i[b>>0]|0){Dg(a,k[e+8>>2]|0,W);J=a+28|0;k[J>>2]=0;K=a+12|0;M=a+4|0;iF(k[K>>2]|0,0,(k[M>>2]<<2)+4|0)|0;b=k[a+16>>2]|0;if(b|0)iF(b|0,0,k[M>>2]<<2|0)|0;U=k[c>>2]|0;V=k[U+8>>2]|0;U=k[U+4>>2]|0;Gg(a,((V|0)<(U|0)?U:V)<<1);a:do if((W|0)>0){F=d;C=F+20|0;D=F+24|0;E=F+12|0;F=F+16|0;G=e+20|0;H=e+24|0;I=e+12|0;A=e+16|0;B=a+20|0;z=a+24|0;x=0;b:while(1){b=k[K>>2]|0;c=k[b+(x<<2)>>2]|0;if((c|0)!=(k[J>>2]|0)){V=15;break}y=x;x=x+1|0;b=b+(x<<2)|0;if(k[b>>2]|0){V=17;break}k[b>>2]=c;m=k[C>>2]|0;h=k[D>>2]|0;b=k[E>>2]|0;j=k[b+(y<<2)>>2]|0;c=k[F>>2]|0;if(!c)w=k[b+(x<<2)>>2]|0;else w=(k[c+(y<<2)>>2]|0)+j|0;l=k[G>>2]|0;f=k[H>>2]|0;b=k[I>>2]|0;e=k[b+(y<<2)>>2]|0;c=k[A>>2]|0;if(!c)v=k[b+(x<<2)>>2]|0;else v=(k[c+(y<<2)>>2]|0)+e|0;d=(j|0)<(w|0);c:do if(d){c=k[h+(j<<2)>>2]|0;do if((e|0)<(v|0)){b=k[f+(e<<2)>>2]|0;if((c|0)!=(b|0))if((c|0)<(b|0))break;else{V=30;break c}else{N=j+1|0;O=e+1|0;P=+p[m+(j<<3)>>3]+ +p[l+(e<<3)>>3];L=c;V=35;break c}}while(0);N=j+1|0;O=e;P=+p[m+(j<<3)>>3]+0.0;L=c;V=35}else V=30;while(0);do if((V|0)==30?(V=0,(e|0)<(v|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[h+(j<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;N=j;O=e+1|0;P=+p[l+(e<<3)>>3]+0.0;L=b;V=35}while(0);d:do if((V|0)==35?(0,(L|0)>-1):0){t=h;s=m;r=N;b=O;g=P;c=L;e:while(1){n=(r|0)<(w|0);o=t+(r<<2)|0;q=b;b=c;while(1){j=(q|0)<(v|0);m=f+(q<<2)|0;c=k[K>>2]|0;d=c+(x<<2)|0;e=k[d>>2]|0;h=(e|0)==(k[J>>2]|0);if(n){if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;V=k[J>>2]|0;Eg(B,V+1|0,1.0);c=k[B>>2]|0;p[c+(V<<3)>>3]=0.0;k[(k[z>>2]|0)+(V<<2)>>2]=b;p[c+(e<<3)>>3]=g;c=k[o>>2]|0;if(!j){V=59;break}b=k[m>>2]|0;if((c|0)==(b|0)){V=57;break}if((c|0)<(b|0)){V=59;break}if((c|0)<=(b|0))break d}else{if(!j)break e;if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;U=k[J>>2]|0;Eg(B,U+1|0,1.0);V=k[B>>2]|0;p[V+(U<<3)>>3]=0.0;k[(k[z>>2]|0)+(U<<2)>>2]=b;p[V+(e<<3)>>3]=g;b=k[m>>2]|0}g=+p[l+(q<<3)>>3]+0.0;if((b|0)>-1)q=q+1|0;else break d}if((V|0)==57){b=q+1|0;g=+p[s+(r<<3)>>3]+ +p[l+(q<<3)>>3]}else if((V|0)==59){b=q;g=+p[s+(r<<3)>>3]+0.0}if((c|0)>-1)r=r+1|0;else break d}if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;U=k[J>>2]|0;Eg(B,U+1|0,1.0);V=k[B>>2]|0;p[V+(U<<3)>>3]=0.0;k[(k[z>>2]|0)+(U<<2)>>2]=b;p[V+(e<<3)>>3]=g}while(0);if((x|0)>=(W|0))break a}if((V|0)==15)Oa(16047,15958,414,16152);else if((V|0)==17)Oa(16161,15958,415,16152);else if((V|0)==52)Oa(16249,15958,392,16348);else if((V|0)==55)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=X;return}f=k[J>>2]|0;d=k[M>>2]|0;if((d|0)<=-1){u=X;return}e=k[K>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=X;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[M>>2]|0));u=X;return}I=k[e+8>>2]|0;i[U>>0]=0;L=U+4|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[L+16>>2]=0;k[L+20>>2]=0;k[L+24>>2]=0;k[L+28>>2]=0;k[U+8>>2]=I;I=U+28|0;k[I>>2]=0;b=Oq((W<<2)+4|0)|0;k[U+12>>2]=b;if(!b){X=Kb(4)|0;cF(X);Cc(X|0,2032,79)}k[L>>2]=W;N=U+16|0;O=k[c>>2]|0;K=U+12|0;iF(b|0,0,(W<<2)+4|0)|0;V=k[O+8>>2]|0;O=k[O+4>>2]|0;Gg(U,((V|0)<(O|0)?O:V)<<1);f:do if((W|0)>0){E=d;B=E+20|0;C=E+24|0;D=E+12|0;E=E+16|0;F=e+20|0;G=e+24|0;H=e+12|0;z=e+16|0;A=U+20|0;y=U+24|0;w=0;g:while(1){b=k[K>>2]|0;c=k[b+(w<<2)>>2]|0;if((c|0)!=(k[I>>2]|0)){V=74;break}x=w;w=w+1|0;b=b+(w<<2)|0;if(k[b>>2]|0){V=76;break}k[b>>2]=c;m=k[B>>2]|0;h=k[C>>2]|0;b=k[D>>2]|0;j=k[b+(x<<2)>>2]|0;c=k[E>>2]|0;if(!c)v=k[b+(w<<2)>>2]|0;else v=(k[c+(x<<2)>>2]|0)+j|0;l=k[F>>2]|0;f=k[G>>2]|0;b=k[H>>2]|0;e=k[b+(x<<2)>>2]|0;c=k[z>>2]|0;if(!c)t=k[b+(w<<2)>>2]|0;else t=(k[c+(x<<2)>>2]|0)+e|0;d=(j|0)<(v|0);h:do if(d){b=k[h+(j<<2)>>2]|0;do if((e|0)<(t|0)){c=k[f+(e<<2)>>2]|0;if((b|0)!=(c|0))if((b|0)<(c|0))break;else{V=89;break h}else{M=j+1|0;Q=e+1|0;R=+p[m+(j<<3)>>3]+ +p[l+(e<<3)>>3];J=b;V=94;break h}}while(0);M=j+1|0;Q=e;R=+p[m+(j<<3)>>3]+0.0;J=b;V=94}else V=89;while(0);do if((V|0)==89?(V=0,(e|0)<(t|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[h+(j<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;M=j;Q=e+1|0;R=+p[l+(e<<3)>>3]+0.0;J=b;V=94}while(0);i:do if((V|0)==94?(0,(J|0)>-1):0){s=l;c=M;r=Q;g=R;b=J;while(1){n=(r|0)<(t|0);o=f+(r<<2)|0;q=c;while(1){c=h+(q<<2)|0;d=k[K>>2]|0;e=d+(w<<2)|0;j=k[e>>2]|0;l=(j|0)==(k[I>>2]|0);if((q|0)>=(v|0)){V=105;break}if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g;b=k[c>>2]|0;if(n){c=k[o>>2]|0;if((b|0)==(c|0)){V=116;break}if((b|0)>=(c|0)){V=104;break}}g=+p[m+(q<<3)>>3]+0.0;if((b|0)>-1)q=q+1|0;else break i}if((V|0)==104)if((b|0)>(c|0)){b=c;V=119}else break i;else if((V|0)==105){if(!n)break;if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g;b=k[o>>2]|0;V=119}else if((V|0)==116){V=0;c=q+1|0;g=+p[m+(q<<3)>>3]+ +p[s+(r<<3)>>3]}if((V|0)==119){c=q;g=+p[s+(r<<3)>>3]+0.0}if((b|0)>-1)r=r+1|0;else break i}if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g}while(0);if((w|0)>=(W|0))break f}if((V|0)==74)Oa(16047,15958,414,16152);else if((V|0)==76)Oa(16161,15958,415,16152);else if((V|0)==111)Oa(16249,15958,392,16348);else if((V|0)==114)Oa(16371,15958,393,16348)}while(0);if((k[U+16>>2]|0)==0?(T=k[I>>2]|0,S=k[L>>2]|0,(S|0)>-1):0){d=k[K>>2]|0;b=S;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(S|0))do{b=b+1|0;k[d+(b<<2)>>2]=T}while((b|0)<(k[L>>2]|0))}i[U>>0]=1;Ag(a,U)|0;Pq(k[K>>2]|0);Pq(k[N>>2]|0);b=k[U+20>>2]|0;if(b|0)FA(b);b=k[U+24>>2]|0;if(b|0)FA(b);u=X;return}function hh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function ih(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(c=k[b+8>>2]|0,Dg(a,k[c+8>>2]|0,k[c+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}jh(a,b);return a|0} -function pi(a,b,c,d,e,f,g,h,i,j,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=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=u;u=u+48|0;C=J+44|0;F=J+40|0;w=J+24|0;x=J;y=J+12|0;if((c|0)<=-1)Oa(16605,15693,425,29764);G=o+12|0;q=k[G>>2]|0;if((q|0)<=(c|0))Oa(16605,15693,425,29764);z=o+8|0;k[C>>2]=k[(k[z>>2]|0)+(c<<2)>>2];H=o+44|0;if((k[H>>2]|0)<=(c|0))Oa(16605,15693,425,29764);I=o+40|0;k[F>>2]=k[(k[I>>2]|0)+(c<<2)>>2];r=b<<1;A=(k[l>>2]|0)+(r<<2)|0;if(!((b|0)>-1|(A|0)==0))Oa(13818,13988,175,14058);if((r|b|0)<0?1:((k[l+4>>2]|0)-b|0)<(r|0))Oa(14177,13744,147,13812);k[w>>2]=c;k[w+4>>2]=C;k[w+8>>2]=o;k[w+12>>2]=a;do if((b|0)>0){q=g+4|0;r=o+24|0;s=y+4|0;l=0;while(1){if((k[q>>2]|0)<=(l|0)){B=13;break}t=(k[g>>2]|0)+(l<<2)|0;v=k[t>>2]|0;if((v|0)==-1){B=15;break}k[t>>2]=-1;if(!((v|0)>-1&(v|0)<(b|0))){B=20;break}if((k[A+(v<<2)>>2]|0)!=(c|0)){K=i;t=k[K+4>>2]|0;B=x;k[B>>2]=k[K>>2];k[B+4>>2]=t;k[y>>2]=A;k[s>>2]=b;Pi(a,c,d,f,r,h,x,j,y,m,n,o,F,v,w)}l=l+1|0;if((l|0)>=(b|0)){B=15;break}}if((B|0)==13)Oa(16605,15693,408,29907);else if((B|0)==15){p=k[G>>2]|0;break}else if((B|0)==20)Oa(16605,15693,425,29764)}else p=q;while(0);if((p|0)<=(c|0))Oa(16605,15693,425,29764);n=k[z>>2]|0;m=k[n+(c<<2)>>2]|0;w=c+1|0;a=c+-1|0;do if(!c){q=0;l=0;B=51}else{if((m|0)<=-1)Oa(16605,15693,425,29764);if((k[o+4>>2]|0)<=(m|0))Oa(16605,15693,425,29764);l=k[(k[o>>2]|0)+(m<<2)>>2]|0;r=k[H>>2]|0;if((r|0)<=(c|0))Oa(16605,15693,425,29764);s=k[I>>2]|0;b=s+(c<<2)|0;t=k[b>>2]|0;if(!((c|0)>0&(r|0)>=(c|0)))Oa(16605,15693,425,29764);v=s+(a<<2)|0;q=k[v>>2]|0;if(!((c-l|0)>=(e|0)?1:((k[F>>2]|0)-t|0)!=(t+-1-q|0))){if((k[C>>2]|0)!=-1){E=m;break}}else k[C>>2]=-1;if((l|0)>=(c+-2|0)){q=c;l=m+1|0;B=51;break}p=l+1|0;if(!((l|0)>-2&(r|0)>(p|0)))Oa(16605,15693,425,29764);l=k[s+(p<<2)>>2]|0;k[v>>2]=l;p=t-q+l|0;if((k[j+4>>2]|0)<(c|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(a<<2)>>2]=p;if((k[H>>2]|0)<=(c|0))Oa(16605,15693,425,29764);k[b>>2]=p;a:do if((q|0)<(k[F>>2]|0)){r=o+28|0;s=k[o+24>>2]|0;t=(q|0)>-1;v=(l|0)>-1;p=l;while(1){if(!t){B=46;break}l=k[r>>2]|0;if((l|0)<=(q|0)){B=46;break}if(!(v&(l|0)>(p|0))){B=48;break}k[s+(p<<2)>>2]=k[s+(q<<2)>>2];q=q+1|0;p=p+1|0;if((q|0)>=(k[F>>2]|0)){D=p;break a}}if((B|0)==46)Oa(16605,15693,425,29764);else if((B|0)==48)Oa(16605,15693,425,29764)}else D=l;while(0);k[F>>2]=D;q=c;l=m+1|0;p=k[G>>2]|0;B=51}while(0);if((B|0)==51){if((p|0)<=(q|0))Oa(16605,15693,425,29764);k[n+(q<<2)>>2]=l;if((l|0)>-2)E=l;else Oa(16605,15693,425,29764)}p=E+1|0;if((k[o+4>>2]|0)<=(p|0))Oa(16605,15693,425,29764);k[(k[o>>2]|0)+(p<<2)>>2]=w;if(!((c|0)>-2?(k[G>>2]|0)>(w|0):0))Oa(16605,15693,425,29764);k[n+(w<<2)>>2]=E;if((k[j+4>>2]|0)<=(c|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(c<<2)>>2]=k[F>>2];if((k[H>>2]|0)>(w|0)){k[(k[I>>2]|0)+(w<<2)>>2]=k[F>>2];u=J;return 0}else Oa(16605,15693,425,29764);return 0}function qi(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;W=u;u=u+80|0;V=W+64|0;T=W+56|0;S=W+48|0;U=W;R=W+28|0;if((b|0)<=-1)Oa(16605,15693,425,29764);C=i+12|0;if((k[C>>2]|0)<=(b|0))Oa(16605,15693,425,29764);D=i+8|0;N=k[(k[D>>2]|0)+(b<<2)>>2]|0;a:do if((c|0)>0){E=f+4|0;F=i+4|0;G=i+36|0;H=i+32|0;I=i+44|0;J=i+40|0;K=g+4|0;L=i+16|0;M=i+24|0;A=c;B=0;b:while(1){if((A|0)<=0){O=9;break}if((k[E>>2]|0)<(A|0)){O=9;break}A=A+-1|0;q=k[(k[f>>2]|0)+(A<<2)>>2]|0;if(!((q|0)>-1?(k[C>>2]|0)>(q|0):0)){O=11;break}j=k[(k[D>>2]|0)+(q<<2)>>2]|0;do if((N|0)!=(j|0)){if(!((j|0)>-1?(k[F>>2]|0)>(j|0):0)){O=14;break b}j=k[(k[i>>2]|0)+(j<<2)>>2]|0;w=(j|0)<(h|0)?h:j;l=w-j|0;r=k[G>>2]|0;if(!((w|0)>-1&(r|0)>(w|0))){O=16;break b}s=k[H>>2]|0;t=s+(w<<2)|0;k[S>>2]=(k[t>>2]|0)+l;if((j|0)<=-1){O=19;break b}m=k[I>>2]|0;if((m|0)<=(j|0)){O=19;break b}n=k[J>>2]|0;o=k[n+(j<<2)>>2]|0;x=o+l|0;if((k[K>>2]|0)<=(q|0)){O=21;break b}v=k[(k[g>>2]|0)+(q<<2)>>2]|0;v=(v|0)<(h|0)?h:v;y=q-v|0;z=y+1|0;j=j+1|0;if((m|0)<=(j|0)){O=23;break b}m=w+~q-l-o+(k[n+(j<<2)>>2]|0)|0;j=w+1|0;if((r|0)<=(j|0)){O=25;break b}l=(k[s+(j<<2)>>2]|0)-(k[t>>2]|0)|0;j=v-w|0;if(!y){Qi(z,d,e,L,S,l,m,M,x,j);break}else{Ri(z,d,e,L,S,l,m,M,x,j);break}}while(0);B=B+1|0;if((B|0)>=(c|0)){Q=G;break a}}if((O|0)==9)Oa(16605,15693,425,29764);else if((O|0)==11)Oa(16605,15693,425,29764);else if((O|0)==14)Oa(16605,15693,425,29764);else if((O|0)==16)Oa(16605,15693,425,29764);else if((O|0)==19)Oa(16605,15693,425,29764);else if((O|0)==21)Oa(16605,15693,425,29764);else if((O|0)==23)Oa(16605,15693,425,29764);else if((O|0)==25)Oa(16605,15693,425,29764)}else Q=i+36|0;while(0);if((k[Q>>2]|0)<=(b|0))Oa(16605,15693,425,29764);z=i+32|0;w=k[(k[z>>2]|0)+(b<<2)>>2]|0;if((N|0)<=-1)Oa(16605,15693,425,29764);if((k[i+4>>2]|0)<=(N|0))Oa(16605,15693,425,29764);C=k[(k[i>>2]|0)+(N<<2)>>2]|0;D=C+1|0;if((C|0)<=-2)Oa(16605,15693,425,29764);B=i+44|0;j=k[B>>2]|0;if((j|0)<=(D|0))Oa(16605,15693,425,29764);o=i+40|0;l=k[o>>2]|0;if(!((C|0)>-1&(j|0)>(C|0)))Oa(16605,15693,425,29764);l=(k[l+(D<<2)>>2]|0)+w-(k[l+(C<<2)>>2]|0)|0;m=i+52|0;E=i+16|0;n=i+88|0;while(1){if((l|0)<=(k[m>>2]|0))break;j=yi(a,E,m,w,0,n)|0;if(j|0){O=86;break}}if((O|0)==86){u=W;return j|0}l=k[B>>2]|0;if((l|0)<=(C|0))Oa(16605,15693,425,29764);j=k[o>>2]|0;y=j+(C<<2)|0;m=k[y>>2]|0;if((l|0)<=(D|0))Oa(16605,15693,425,29764);x=j+(D<<2)|0;q=k[x>>2]|0;r=k[i+28>>2]|0;s=k[i+24>>2]|0;t=d+4|0;c=i+20|0;v=k[c>>2]|0;A=k[i+16>>2]|0;n=(m|0)>-1;o=(w|0)>-1;c:do if((m|0)<(q|0)){j=w;while(1){if(!(n&(r|0)>(m|0))){O=53;break}l=k[s+(m<<2)>>2]|0;if((l|0)<=-1){O=54;break}if((k[t>>2]|0)<=(l|0)){O=54;break}if(!(o&(v|0)>(j|0))){O=55;break}i=(k[d>>2]|0)+(l<<3)|0;p[A+(j<<3)>>3]=+p[i>>3];p[i>>3]=0.0;j=j+1|0;m=m+1|0;if((m|0)>=(q|0)){P=j;break c}}if((O|0)==53)Oa(16605,15693,425,29764);else if((O|0)==54)Oa(16605,15693,425,29764);else if((O|0)==55)Oa(16605,15693,425,29764)}else P=w;while(0);v=b+1|0;if(!((b|0)>-2?(k[Q>>2]|0)>(v|0):0))Oa(16605,15693,425,29764);q=k[z>>2]|0;s=q+(v<<2)|0;k[s>>2]=P;l=(C|0)<(h|0)?h:C;if((l|0)>=(b|0)){V=0;u=W;return V|0}o=l-C|0;j=k[B>>2]|0;if((j|0)<=(C|0))Oa(16605,15693,425,29764);m=k[Q>>2]|0;if(!((l|0)>-1&(m|0)>(l|0)))Oa(16605,15693,425,29764);n=(k[q+(l<<2)>>2]|0)+o|0;k[S>>2]=n;if((j|0)<=(D|0))Oa(16605,15693,425,29764);t=b-l|0;r=(k[x>>2]|0)-(t+o)-(k[y>>2]|0)|0;if((m|0)<=(b|0))Oa(16605,15693,425,29764);j=k[q+(b<<2)>>2]|0;q=j+o|0;if((m|0)<=(v|0))Oa(16605,15693,425,29764);o=(k[s>>2]|0)-j|0;j=A+(n<<3)|0;if((o|0)<=-1)Oa(19264,19297,66,19366);l=(t|0)>-1;if(!(l|(j|0)==0))Oa(13818,13988,175,14058);b=A+(q<<3)|0;k[U>>2]=b;n=U+4|0;k[n>>2]=t;if(!(l|(b|0)==0))Oa(13818,13988,175,14058);k[U+12>>2]=E;k[U+16>>2]=q;b=k[c>>2]|0;k[U+24>>2]=b;if((q|t|0)<0|(b-t|0)<(q|0))Oa(14177,13744,147,13812);k[R>>2]=j;k[R+4>>2]=t;k[R+8>>2]=t;k[R+12>>2]=o;k[T>>2]=R;k[T+4>>2]=U;Si(U,T,V);j=k[E>>2]|0;m=j+((k[S>>2]|0)+t<<3)|0;if(!((r|t|0)>-1|(m|0)==0))Oa(13818,13988,175,14058);l=q+t|0;j=j+(l<<3)|0;if(!((r|0)>-1|(j|0)==0))Oa(13818,13988,175,14058);if((l|r|0)<0?1:((k[c>>2]|0)-r|0)<(l|0))Oa(14177,13744,147,13812);if((t|0)!=(k[n>>2]|0))Oa(14710,14850,97,14920);U=k[U>>2]|0;k[V>>2]=m;k[V+4>>2]=o;k[T>>2]=U;k[T+4>>2]=1;Ui(r,t,V,T,j,1,-1.0);V=0;u=W;return V|0}function ri(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;if((b|0)<=-1)Oa(16605,15693,425,29764);R=h+12|0;if((k[R>>2]|0)<=(b|0))Oa(16605,15693,425,29764);P=h+8|0;Q=k[(k[P>>2]|0)+(b<<2)>>2]|0;S=h+76|0;i=k[S>>2]|0;if((i|0)<=(b|0))Oa(16605,15693,425,29764);V=h+72|0;j=k[(k[V>>2]|0)+(b<<2)>>2]|0;a:do if((c|0)>0){y=d+4|0;z=e+4|0;A=h+4|0;B=h+44|0;C=h+40|0;D=h+80|0;E=h+56|0;F=h+88|0;G=h+64|0;H=h+28|0;I=h+24|0;J=f+4|0;K=h+68|0;L=h+64|0;M=g+4|0;N=h+60|0;O=h+56|0;w=0;x=c;b:while(1){if((x|0)<1?1:(k[y>>2]|0)<(x|0)){j=9;break}x=x+-1|0;l=k[(k[d>>2]|0)+(x<<2)>>2]|0;if(!((l|0)>-1?(k[R>>2]|0)>(l|0):0)){j=11;break}i=k[(k[P>>2]|0)+(l<<2)>>2]|0;if((Q|0)!=(i|0)){if((k[z>>2]|0)<=(l|0)){j=14;break}m=k[(k[e>>2]|0)+(l<<2)>>2]|0;if((m|0)!=-1){if(!((i|0)>-1?(k[A>>2]|0)>(i|0):0)){j=17;break}i=k[(k[h>>2]|0)+(i<<2)>>2]|0;if(!((i|0)>-1?(k[B>>2]|0)>(i|0):0)){j=19;break}u=m-i+(k[(k[C>>2]|0)+(i<<2)>>2]|0)|0;v=l-m|0;l=j+1+v|0;while(1){if((l|0)<=(k[D>>2]|0))break;i=yi(a,E,D,j,0,F)|0;if(i|0){j=42;break b}i=zi(a,G,D,j,1,F)|0;if(i|0){j=42;break b}}if((v|0)>=0){n=k[I>>2]|0;o=k[f>>2]|0;q=k[L>>2]|0;r=k[O>>2]|0;s=(u|0)>-1;t=(j|0)>-1;m=0;l=u;i=j;while(1){if(!(s&(k[H>>2]|0)>(l|0))){j=27;break b}j=k[n+(l<<2)>>2]|0;if(!((j|0)>-1?(k[J>>2]|0)>(j|0):0)){j=29;break b}if(!(t&(k[K>>2]|0)>(i|0))){j=31;break b}k[q+(i<<2)>>2]=k[o+(j<<2)>>2];if((k[M>>2]|0)<=(j|0)){j=33;break b}if((k[N>>2]|0)<=(i|0)){j=35;break b}u=(k[g>>2]|0)+(j<<3)|0;p[r+(i<<3)>>3]=+p[u>>3];p[u>>3]=0.0;i=i+1|0;if((m|0)<(v|0)){m=m+1|0;l=l+1|0}else break}}else i=j}else i=j}else i=j;w=w+1|0;if((w|0)>=(c|0)){j=38;break}else j=i}switch(j|0){case 9:{Oa(16605,15693,425,29764);break}case 11:{Oa(16605,15693,425,29764);break}case 14:{Oa(16605,15693,425,29764);break}case 17:{Oa(16605,15693,425,29764);break}case 19:{Oa(16605,15693,425,29764);break}case 27:{Oa(16605,15693,425,29764);break}case 29:{Oa(16605,15693,425,29764);break}case 31:{Oa(16605,15693,425,29764);break}case 33:{Oa(16605,15693,425,29764);break}case 35:{Oa(16605,15693,425,29764);break}case 38:{T=i;U=k[S>>2]|0;break a}case 42:return i|0}}else{T=j;U=i}while(0);i=b+1|0;if(!((b|0)>-2&(U|0)>(i|0)))Oa(16605,15693,425,29764);k[(k[V>>2]|0)+(i<<2)>>2]=T;V=0;return V|0}function si(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;var h=0.0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0.0;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[g+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);a=k[(k[g+8>>2]|0)+(b<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[g+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);r=k[(k[g>>2]|0)+(a<<2)>>2]|0;s=b-r|0;if((r|0)<=-1)Oa(16605,15693,425,29764);a=k[g+44>>2]|0;if((a|0)<=(r|0))Oa(16605,15693,425,29764);i=k[g+40>>2]|0;m=k[i+(r<<2)>>2]|0;j=r+1|0;if((a|0)<=(j|0))Oa(16605,15693,425,29764);t=(k[i+(j<<2)>>2]|0)-m|0;i=k[g+36>>2]|0;if((i|0)<=(j|0))Oa(16605,15693,425,29764);l=k[g+32>>2]|0;if((i|0)<=(r|0))Oa(16605,15693,425,29764);o=k[l+(r<<2)>>2]|0;n=(k[l+(j<<2)>>2]|0)-o|0;a=k[g+16>>2]|0;o=a+(o<<3)|0;if((i|0)<=(b|0))Oa(16605,15693,425,29764);q=a+(k[l+(b<<2)>>2]<<3)|0;m=(k[g+24>>2]|0)+(m<<2)|0;if((k[e+4>>2]|0)<=(b|0))Oa(16605,15693,425,29764);a=k[(k[e>>2]|0)+(b<<2)>>2]|0;do if((s|0)<(t|0)){h=-1.0;j=s;i=s;l=-1;do{u=+P(+(+p[q+(i<<3)>>3]));e=u>h;j=e?i:j;h=e?u:h;l=(k[m+(i<<2)>>2]|0)==(a|0)?i:l;i=i+1|0}while((i|0)!=(t|0));if(h<=0.0){if(h<0.0)break;a=k[m+(j<<2)>>2]|0;break}if((l|0)>-1){u=+p[q+(l<<3)>>3];c=u==0.0?1:!(+P(+u)>=h*+p[c>>3]);j=c?j:l}a=m+(j<<2)|0;i=k[a>>2]|0;k[f>>2]=i;if((i|0)<=-1)Oa(16605,15693,425,29764);if((k[d+4>>2]|0)<=(i|0))Oa(16605,15693,425,29764);k[(k[d>>2]|0)+(i<<2)>>2]=b;if((j|0)!=(s|0)?(f=m+(s<<2)|0,d=k[a>>2]|0,k[a>>2]=k[f>>2],k[f>>2]=d,(s|0)>=0):0){i=b+1-r|0;a=0;do{f=aa(a,n)|0;d=o+(f+j<<3)|0;f=o+(f+s<<3)|0;u=+p[d>>3];p[d>>3]=+p[f>>3];p[f>>3]=u;a=a+1|0}while((a|0)!=(i|0))}h=1.0/+p[q+(s<<3)>>3];a=s+1|0;if((a|0)>=(t|0)){f=0;return f|0}do{f=q+(a<<3)|0;p[f>>3]=h*+p[f>>3];a=a+1|0}while((a|0)!=(t|0));a=0;return a|0}while(0);k[f>>2]=a;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[d+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[d>>2]|0)+(a<<2)>>2]=b;f=b+1|0;return f|0}function ti(a){a=a|0;var b=0,c=0;k[a>>2]=2804;b=a+56|0;k[b>>2]=2824;c=a+4|0;k[c>>2]=2856;NA(a+36|0);br(c);Ar(a,2836);Zq(b);return}function ui(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;if((b|0)<=-1)Oa(16605,15693,425,29764);L=i+12|0;if((k[L>>2]|0)<=(b|0))Oa(16605,15693,425,29764);M=k[i+8>>2]|0;w=k[M+(b<<2)>>2]|0;if((e|0)<=0)return;x=f+4|0;y=g+4|0;z=h+4|0;A=i+44|0;B=i+40|0;C=i+28|0;D=i+24|0;E=i+4|0;F=c+4|0;G=i+36|0;H=i+32|0;I=i+20|0;J=i+16|0;v=0;a:while(1){if((k[x>>2]|0)<=(v|0)){a=7;break}K=k[(k[f>>2]|0)+(v<<2)>>2]|0;b=K+1|0;if((K|0)<=-1){a=10;break}if((k[y>>2]|0)<=(K|0)){a=10;break}b:do if((k[(k[g>>2]|0)+(K<<2)>>2]|0)!=-1){a=k[L>>2]|0;if((a|0)<=(K|0)){a=13;break a}o=k[M+(K<<2)>>2]|0;if((a|0)<=(b|0)){a=15;break a}if(!((o|0)==(w|0)?1:(o|0)==(k[M+(b<<2)>>2]|0))){if((k[z>>2]|0)<=(K|0)){a=18;break a}a=k[A>>2]|0;if((a|0)<=(b|0)){a=20;break a}u=(k[h>>2]|0)+(K<<2)|0;j=k[B>>2]|0;n=k[j+(b<<2)>>2]|0;if((k[u>>2]|0)>=(n|0)){if((a|0)<=(K|0)){a=23;break a}t=j+(K<<2)|0;a=k[t>>2]|0;b=n+-1|0;if((a|0)<(n|0)){m=k[C>>2]|0;q=k[D>>2]|0;l=(a|0)>-1;j=a;while(1){if(!(l&(m|0)>(j|0))){a=28;break a}if((k[q+(j<<2)>>2]|0)==(d|0))break;j=j+1|0;if((j|0)>=(n|0))break b}if(!((o|0)>-1?(k[E>>2]|0)>(o|0):0)){a=31;break a}c:do if((K|0)==(k[(k[i>>2]|0)+(o<<2)>>2]|0)){l=q;while(1){n=k[F>>2]|0;r=k[c>>2]|0;j=(b|0)<(m|0);while(1){if(!((b|0)>-1&j)){a=51;break a}o=l+(b<<2)|0;q=k[o>>2]|0;if(!((q|0)>-1&(n|0)>(q|0))){a=53;break a}if((k[r+(q<<2)>>2]|0)!=-1)break;if((a|0)<(b|0))b=b+-1|0;else break c}if((m|0)<=(a|0)){a=57;break a}l=l+(a<<2)|0;j=k[l>>2]|0;if(!((j|0)>-1&(n|0)>(j|0))){a=59;break a}s=a+1|0;if((k[r+(j<<2)>>2]|0)==-1){k[l>>2]=q;k[o>>2]=j;if((k[G>>2]|0)<=(K|0)){a=62;break a}j=k[(k[H>>2]|0)+(K<<2)>>2]|0;if((k[A>>2]|0)<=(K|0)){a=63;break a}m=k[t>>2]|0;l=a-m+j|0;m=b-m+j|0;if((l|0)<=-1){a=64;break a}n=k[I>>2]|0;if((n|0)<=(l|0)){a=64;break a}o=k[J>>2]|0;j=o+(l<<3)|0;if(!((m|0)>-1&(n|0)>(m|0))){a=65;break a}r=o+(m<<3)|0;N=+p[j>>3];p[j>>3]=+p[r>>3];p[r>>3]=N;b=b+-1|0}if((a|0)>=(b|0)){a=s;break c}a=s;m=k[C>>2]|0;l=k[D>>2]|0}}else{l=q;while(1){n=k[F>>2]|0;r=k[c>>2]|0;j=(b|0)<(m|0);while(1){if(!((b|0)>-1&j)){a=51;break a}o=l+(b<<2)|0;q=k[o>>2]|0;if(!((q|0)>-1&(n|0)>(q|0))){a=53;break a}if((k[r+(q<<2)>>2]|0)!=-1)break;if((a|0)<(b|0))b=b+-1|0;else break c}if((m|0)<=(a|0)){a=57;break a}j=l+(a<<2)|0;l=k[j>>2]|0;if(!((l|0)>-1&(n|0)>(l|0))){a=59;break a}m=a+1|0;if((k[r+(l<<2)>>2]|0)==-1){k[j>>2]=q;k[o>>2]=l;b=b+-1|0}if((a|0)>=(b|0)){a=m;break c}a=m;m=k[C>>2]|0;l=k[D>>2]|0}}while(0);if((k[z>>2]|0)<=(K|0)){a=69;break a}k[u>>2]=a}}}}while(0);v=v+1|0;if((v|0)>=(e|0)){a=72;break}}switch(a|0){case 7:{Oa(16605,15693,180,29764);break}case 10:{Oa(16605,15693,425,29764);break}case 13:{Oa(16605,15693,425,29764);break}case 15:{Oa(16605,15693,425,29764);break}case 18:{Oa(16605,15693,425,29764);break}case 20:{Oa(16605,15693,425,29764);break}case 23:{Oa(16605,15693,425,29764);break}case 28:{Oa(16605,15693,425,29764);break}case 31:{Oa(16605,15693,425,29764);break}case 51:{Oa(16605,15693,425,29764);break}case 53:{Oa(16605,15693,180,29764);break}case 57:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,180,29764);break}case 62:{Oa(16605,15693,425,29764);break}case 63:{Oa(16605,15693,425,29764);break}case 64:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 69:{Oa(16605,15693,425,29764);break}case 72:return}}function vi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=k[a+4>>2]|0;if((l|0)<=-1)Oa(13359,12702,312,12780);if(!l){m=1;return m|0}b=Oq(l+16|0)|0;j=b+16&-16;if(!b){m=Kb(4)|0;cF(m);Cc(m|0,2032,79)}k[j+-4>>2]=b;if(!j){m=Kb(4)|0;cF(m);Cc(m|0,2032,79)}g=j;iF(g|0,0,l|0)|0;b=1;c=0;a:while(1){e=(c|0)>-1;while(1){if((c|0)>=(l|0)){m=16;break a}if(!e){m=12;break a}d=g+c|0;f=c+1|0;if(!(i[d>>0]|0))break;else c=f}i[d>>0]=1;e=k[a>>2]|0;d=k[e+(c<<2)>>2]|0;if((d|0)!=(c|0))do{i[g+d>>0]=1;b=0-b|0;d=k[e+(d<<2)>>2]|0}while((d|0)!=(c|0));if((f|0)<(l|0))c=f;else{h=b;break}}if((m|0)==12)Oa(16605,15693,408,29907);if((m|0)==16)if(!j){m=b;return m|0}else h=b;Pq(k[g+-4>>2]|0);m=h;return m|0}function wi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;k[c>>2]=0;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[e+76>>2]|0)<=(b|0))Oa(16605,15693,425,29764);k[d>>2]=k[(k[e+72>>2]|0)+(b<<2)>>2];if((k[e+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);q=k[(k[e+8>>2]|0)+(b<<2)>>2]|0;if((b|0)<1|(q|0)<0)return;n=e+4|0;o=k[e>>2]|0;p=e+44|0;m=k[e+40>>2]|0;l=0;f=k[n>>2]|0;a:while(1){if((f|0)<=(l|0)){a=10;break}b=k[o+(l<<2)>>2]|0;e=b+1|0;if((b|0)<=-2){a=13;break}a=k[p>>2]|0;if((a|0)<=(e|0)){a=13;break}if(!((b|0)>-1&(a|0)>(b|0))){a=15;break}h=l;l=l+1|0;if((f|0)<=(l|0)){a=20;break}i=o+(l<<2)|0;j=1-b|0;g=b;b=(k[m+(e<<2)>>2]|0)-(k[m+(b<<2)>>2]|0)|0;a=f;while(1){if((g|0)>=(k[i>>2]|0))break;k[c>>2]=(k[c>>2]|0)+b;k[d>>2]=j+g+(k[d>>2]|0);a=k[n>>2]|0;if((a|0)>(l|0)){g=g+1|0;b=b+-1|0}else{a=20;break a}}if((h|0)>=(q|0)){a=21;break}else f=a}if((a|0)==10)Oa(16605,15693,425,29764);else if((a|0)==13)Oa(16605,15693,425,29764);else if((a|0)==15)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==21)return}function xi(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,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;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[d+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);p=k[(k[d+8>>2]|0)+(b<<2)>>2]|0;a:do if((p|0)>=0){q=d+4|0;r=d+44|0;s=d+40|0;t=d+28|0;u=d+24|0;v=c+4|0;g=0;o=0;a=k[q>>2]|0;b:while(1){if((a|0)<=(o|0)){a=9;break}l=k[d>>2]|0;a=k[l+(o<<2)>>2]|0;if(!((a|0)>-1?(k[r>>2]|0)>(a|0):0)){a=11;break}e=k[s>>2]|0;n=e+(a<<2)|0;f=k[n>>2]|0;k[n>>2]=g;n=a+1|0;if((k[r>>2]|0)<=(n|0)){a=20;break}h=e+(n<<2)|0;i=(f|0)>-1;j=(g|0)>-1;m=g;while(1){if((f|0)>=(k[h>>2]|0))break;if(!i){a=26;break b}a=k[t>>2]|0;if((a|0)<=(f|0)){a=26;break b}e=k[u>>2]|0;g=k[e+(f<<2)>>2]|0;if(!((g|0)>-1?(k[v>>2]|0)>(g|0):0)){a=27;break b}if(!(j&(a|0)>(m|0))){a=28;break b}k[e+(m<<2)>>2]=k[(k[c>>2]|0)+(g<<2)>>2];if((k[r>>2]|0)>(n|0)){f=f+1|0;m=m+1|0}else{a=20;break b}}h=o;o=o+1|0;a=k[q>>2]|0;if((a|0)<=(o|0)){a=29;break}f=l+(o<<2)|0;g=k[s>>2]|0;e=n;while(1){if((e|0)>=(k[f>>2]|0))break;if((k[r>>2]|0)<=(e|0)){a=30;break b}k[g+(e<<2)>>2]=m;a=k[q>>2]|0;if((a|0)>(o|0))e=e+1|0;else{a=29;break b}}if((h|0)>=(p|0)){w=m;x=r;break a}else g=m}if((a|0)==9)Oa(16605,15693,425,29764);else if((a|0)==11)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==27)Oa(16605,15693,180,29764);else if((a|0)==28)Oa(16605,15693,425,29764);else if((a|0)==29)Oa(16605,15693,425,29764);else if((a|0)==30)Oa(16605,15693,425,29764)}else{w=0;x=d+44|0}while(0);if((k[x>>2]|0)>(b|0)){k[(k[d+40>>2]|0)+(b<<2)>>2]=w;return}else Oa(16605,15693,425,29764)}function yi(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 g=0,h=0,i=0,j=0,l=0,m=0;m=u;u=u+16|0;l=m;a=k[c>>2]|0;if(!((e|0)!=0|(k[f>>2]|0)==0)){j=a+1|0;a=~~(+(a|0)*1.5);a=(j|0)<(a|0)?a:j}k[l>>2]=0;j=l+4|0;k[j>>2]=0;g=(d|0)>0;if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);Nf(l,d,1);if((k[j>>2]|0)!=(d|0))Oa(12160,12207,721,12285);i=k[l>>2]|0;e=0;do{p[i+(e<<3)>>3]=+p[h+(e<<3)>>3];e=e+1|0}while((e|0)!=(d|0));Df(b,a);if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);g=k[l>>2]|0;if((k[j>>2]|0)==(d|0)){e=0;do{p[h+(e<<3)>>3]=+p[g+(e<<3)>>3];e=e+1|0}while((e|0)!=(d|0))}else Oa(14445,14320,257,12780)}}else Df(b,a);k[c>>2]=a;a=k[f>>2]|0;if(a|0)k[f>>2]=a+1;a=k[l>>2]|0;if(!a){u=m;return 0}Pq(k[a+-4>>2]|0);u=m;return 0}function zi(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 g=0,h=0,i=0,j=0,l=0,m=0;m=u;u=u+16|0;l=m;a=k[c>>2]|0;if(!((e|0)!=0|(k[f>>2]|0)==0)){j=a+1|0;a=~~(+(a|0)*1.5);a=(j|0)<(a|0)?a:j}k[l>>2]=0;j=l+4|0;k[j>>2]=0;g=(d|0)>0;if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);Ng(l,d,1);if((k[j>>2]|0)!=(d|0))Oa(12160,12207,721,12285);i=k[l>>2]|0;e=0;do{k[i+(e<<2)>>2]=k[h+(e<<2)>>2];e=e+1|0}while((e|0)!=(d|0));Ef(b,a);if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);g=k[l>>2]|0;if((k[j>>2]|0)==(d|0)){e=0;do{k[h+(e<<2)>>2]=k[g+(e<<2)>>2];e=e+1|0}while((e|0)!=(d|0))}else Oa(14445,14320,257,12780)}}else Ef(b,a);k[c>>2]=a;a=k[f>>2]|0;if(a|0)k[f>>2]=a+1;a=k[l>>2]|0;if(!a){u=m;return 0}Pq(k[a+-4>>2]|0);u=m;return 0}function Ai(a,b,c,d,e,f,g,h,i,j,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;if((o|0)<=-1)Oa(16605,15693,425,29764);M=i+4|0;if((k[M>>2]|0)<=(o|0))Oa(16605,15693,425,29764);K=k[i>>2]|0;k[K+(o<<2)>>2]=b;L=c+4|0;if((k[L>>2]|0)<=(o|0))Oa(16605,15693,425,29764);J=k[c>>2]|0;c=k[J+(o<<2)>>2]|0;if((c|0)==-1){a=k[n>>2]|0;k[n>>2]=a+1;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[e+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[e>>2]|0)+(a<<2)>>2]=o;return}if((c|0)<=-1)Oa(16605,15693,425,29764);F=m+12|0;if((k[F>>2]|0)<=(c|0))Oa(16605,15693,425,29764);G=k[m+8>>2]|0;I=k[G+(c<<2)>>2]|0;a=I+1|0;if((I|0)<=-2)Oa(16605,15693,425,29764);H=m+4|0;if((k[H>>2]|0)<=(a|0))Oa(16605,15693,425,29764);I=k[m>>2]|0;o=k[I+(a<<2)>>2]|0;q=o+-1|0;if((o|0)<=0)Oa(16605,15693,425,29764);E=g+4|0;if((k[E>>2]|0)<(o|0))Oa(16605,15693,425,29764);D=k[g>>2]|0;i=D+(q<<2)|0;a=k[i>>2]|0;if((a|0)!=-1){if((a|0)<=(c|0))return;k[i>>2]=c;return}C=j+4|0;if((k[C>>2]|0)<(o|0))Oa(16605,15693,425,29764);B=k[j>>2]|0;k[B+(q<<2)>>2]=-1;if((k[E>>2]|0)<(o|0))Oa(16605,15693,425,29764);k[i>>2]=c;z=m+44|0;if((k[z>>2]|0)<(o|0))Oa(16605,15693,425,29764);A=h+4|0;if((k[A>>2]|0)<(o|0))Oa(16605,15693,425,29764);u=k[m+40>>2]|0;v=p+4|0;w=f+4|0;x=l+4|0;y=m+28|0;s=m+24|0;t=e+4|0;r=k[h>>2]|0;i=q;a=u+(q<<2)|0;a:while(1){a=k[a>>2]|0;c=k[r+(i<<2)>>2]|0;b:do if((a|0)<(c|0))while(1){h=(a|0)>-1;c:while(1){if(!(h&(k[y>>2]|0)>(a|0))){a=36;break a}g=k[(k[s>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if((g|0)<=-1){a=39;break a}if((k[M>>2]|0)<=(g|0)){a=39;break a}o=K+(g<<2)|0;do if((k[o>>2]|0)!=(b|0)){k[o>>2]=b;if((k[L>>2]|0)<=(g|0)){a=42;break a}m=k[J+(g<<2)>>2]|0;if((m|0)==-1){o=k[n>>2]|0;k[n>>2]=o+1;if(!((o|0)>-1?(k[t>>2]|0)>(o|0):0)){a=45;break a}k[(k[e>>2]|0)+(o<<2)>>2]=g;break}if(!((m|0)>-1?(k[F>>2]|0)>(m|0):0)){a=49;break a}q=k[G+(m<<2)>>2]|0;o=q+1|0;if(!((q|0)>-2?(k[H>>2]|0)>(o|0):0)){a=51;break a}o=k[I+(o<<2)>>2]|0;q=o+-1|0;if((o|0)<=0){a=54;break a}if((k[E>>2]|0)<(o|0)){a=54;break a}g=D+(q<<2)|0;j=k[g>>2]|0;if((j|0)==-1)break c;if((j|0)<=(m|0))break;k[g>>2]=m}while(0);if((a|0)>=(c|0))break b}if(!((i|0)>-1?(k[x>>2]|0)>(i|0):0)){a=59;break a}k[(k[l>>2]|0)+(i<<2)>>2]=a;if((k[C>>2]|0)<(o|0)){a=61;break a}k[B+(q<<2)>>2]=i;if((k[E>>2]|0)<(o|0)){a=63;break a}k[D+(q<<2)>>2]=m;if((k[z>>2]|0)<(o|0)){a=65;break a}if((k[A>>2]|0)<(o|0)){a=67;break a}a=k[u+(q<<2)>>2]|0;c=k[r+(q<<2)>>2]|0;if((a|0)>=(c|0)){i=q;break}else i=q}while(0);a=(k[v>>2]|0)+(i<<2)|0;if((k[a>>2]|0)<(k[p>>2]|0)){k[a>>2]=b;a=k[d>>2]|0;if(!((a|0)>-1?(k[w>>2]|0)>(a|0):0)){a=71;break}k[(k[f>>2]|0)+(a<<2)>>2]=i;k[d>>2]=(k[d>>2]|0)+1}if(!((i|0)>-1?(k[C>>2]|0)>(i|0):0)){a=74;break}a=k[B+(i<<2)>>2]|0;if((a|0)==-1){a=78;break}if(!((a|0)>-1?(k[x>>2]|0)>(a|0):0)){a=77;break}if((k[A>>2]|0)>(a|0)){i=a;a=(k[l>>2]|0)+(a<<2)|0}else{a=32;break}}switch(a|0){case 32:{Oa(16605,15693,425,29764);break}case 36:{Oa(16605,15693,425,29764);break}case 39:{Oa(16605,15693,425,29764);break}case 42:{Oa(16605,15693,425,29764);break}case 45:{Oa(16605,15693,425,29764);break}case 49:{Oa(16605,15693,425,29764);break}case 51:{Oa(16605,15693,425,29764);break}case 54:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,425,29764);break}case 61:{Oa(16605,15693,425,29764);break}case 63:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 71:{Oa(16605,15693,425,29764);break}case 74:{Oa(16605,15693,425,29764);break}case 77:{Oa(16605,15693,425,29764);break}case 78:return}}function Bi(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0.0,n=0.0,o=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0,Y=0.0,Z=0.0,_=0,$=0,ba=0,ca=0;J=((c|0)/2|0)<<1;K=((b|0)/2|0)<<1;if((a|0)<=0)return;L=(b|0)>1;M=(c|0)>1;N=f+((aa(b+-1|0,g)|0)<<3)|0;O=aa(K,i)|0;I=c-J|0;P=d+((aa(J,e)|0)<<3)|0;Q=J|1;R=d+((aa(Q,e)|0)<<3)|0;S=J+2|0;T=d+((aa(S,e)|0)<<3)|0;U=(I|0)==1;G=(K|0)>=(b|0)|(c|0)<2;H=(I|0)<1|(b|0)<1;I=(I|0)==2;E=0;a:while(1){D=a-E|0;F=(D|0)<512?D:512;C=((F|0)/8|0)<<3;if(L){t=d+(E<<3)|0;v=h+(E<<3)|0;y=(F|0)>7;z=(C|0)<(F|0);r=0;do{c=r|1;if(M){A=v+((aa(r,i)|0)<<3)|0;B=v+((aa(c,i)|0)<<3)|0;s=f+((aa(r,g)|0)<<3)|0;j=f+((aa(c,g)|0)<<3)|0;l=0;while(1){n=+p[s>>3];u=+p[s+8>>3];w=+p[j>>3];x=+p[j+8>>3];o=t+((aa(l,e)|0)<<3)|0;q=t+((aa(l|1,e)|0)<<3)|0;l=l+2|0;k=+p[o>>3];m=+p[q>>3];if(y){c=0;do{$=o+(c<<3)|0;_=q+(c<<3)|0;X=A+(c<<3)|0;V=B+(c<<3)|0;Y=+p[$+8>>3];W=x*m+(w*k+ +p[V>>3]);Z=+p[_+8>>3];p[X>>3]=u*m+(n*k+ +p[X>>3]);p[V>>3]=W;ba=X+8|0;ca=V+8|0;k=+p[$+16>>3];W=x*Z+(w*Y+ +p[ca>>3]);m=+p[_+16>>3];p[ba>>3]=u*Z+(n*Y+ +p[ba>>3]);p[ca>>3]=W;ca=X+16|0;ba=V+16|0;W=+p[$+24>>3];Y=x*m+(w*k+ +p[ba>>3]);Z=+p[_+24>>3];p[ca>>3]=u*m+(n*k+ +p[ca>>3]);p[ba>>3]=Y;ba=X+24|0;ca=V+24|0;Y=+p[$+32>>3];k=x*Z+(w*W+ +p[ca>>3]);m=+p[_+32>>3];p[ba>>3]=u*Z+(n*W+ +p[ba>>3]);p[ca>>3]=k;ca=X+32|0;ba=V+32|0;k=+p[$+40>>3];W=x*m+(w*Y+ +p[ba>>3]);Z=+p[_+40>>3];p[ca>>3]=u*m+(n*Y+ +p[ca>>3]);p[ba>>3]=W;ba=X+40|0;ca=V+40|0;W=+p[$+48>>3];Y=x*Z+(w*k+ +p[ca>>3]);m=+p[_+48>>3];p[ba>>3]=u*Z+(n*k+ +p[ba>>3]);p[ca>>3]=Y;ca=X+48|0;ba=V+48|0;Y=+p[$+56>>3];k=x*m+(w*W+ +p[ba>>3]);Z=+p[_+56>>3];p[ca>>3]=u*m+(n*W+ +p[ca>>3]);p[ba>>3]=k;X=X+56|0;V=V+56|0;k=+p[$+64>>3];W=x*Z+(w*Y+ +p[V>>3]);m=+p[_+64>>3];p[X>>3]=u*Z+(n*Y+ +p[X>>3]);p[V>>3]=W;c=c+8|0}while((c|0)<(C|0))}if(z){c=C;do{ba=A+(c<<3)|0;ca=B+(c<<3)|0;Y=k;k=+p[o+(c<<3)+8>>3];Z=x*m+(w*Y+ +p[ca>>3]);W=m;m=+p[q+(c<<3)+8>>3];p[ba>>3]=u*W+(n*Y+ +p[ba>>3]);p[ca>>3]=Z;c=c+1|0}while((c|0)<(F|0))}if((l|0)>=(J|0))break;else{s=s+16|0;j=j+16|0}}}r=r+2|0}while((r|0)<(K|0))}if(!G){o=d+(E<<3)|0;q=h+(E<<3)+(O<<3)|0;r=(F|0)>7;s=(C|0)<(F|0);j=0;l=N;while(1){n=+p[l>>3];u=+p[l+8>>3];t=o+((aa(j,e)|0)<<3)|0;v=o+((aa(j|1,e)|0)<<3)|0;j=j+2|0;k=+p[t>>3];m=+p[v>>3];if(r){c=0;do{ca=q+(c<<3)|0;$=t+(c<<3)|0;Z=+p[$+8>>3];ba=v+(c<<3)|0;Y=+p[ba+8>>3];p[ca>>3]=u*m+(n*k+ +p[ca>>3]);_=ca+8|0;k=+p[$+16>>3];m=+p[ba+16>>3];p[_>>3]=u*Y+(n*Z+ +p[_>>3]);_=ca+16|0;Z=+p[$+24>>3];Y=+p[ba+24>>3];p[_>>3]=u*m+(n*k+ +p[_>>3]);_=ca+24|0;k=+p[$+32>>3];m=+p[ba+32>>3];p[_>>3]=u*Y+(n*Z+ +p[_>>3]);_=ca+32|0;Z=+p[$+40>>3];Y=+p[ba+40>>3];p[_>>3]=u*m+(n*k+ +p[_>>3]);_=ca+40|0;k=+p[$+48>>3];m=+p[ba+48>>3];p[_>>3]=u*Y+(n*Z+ +p[_>>3]);_=ca+48|0;Z=+p[$+56>>3];Y=+p[ba+56>>3];p[_>>3]=u*m+(n*k+ +p[_>>3]);ca=ca+56|0;k=+p[$+64>>3];m=+p[ba+64>>3];p[ca>>3]=u*Y+(n*Z+ +p[ca>>3]);c=c+8|0}while((c|0)<(C|0))}if(s){c=C;do{ca=q+(c<<3)|0;Z=k;k=+p[t+(c<<3)+8>>3];Y=m;m=+p[v+(c<<3)+8>>3];p[ca>>3]=u*Y+(n*Z+ +p[ca>>3]);c=c+1|0}while((c|0)<(F|0))}if((j|0)>=(J|0))break;else l=l+16|0}}b:do if(!H){s=(F|0)>-1;t=P+(E<<3)|0;o=R+(E<<3)|0;q=T+(E<<3)|0;r=(D|0)>0;if(U){c=0;while(1){if(!s){c=28;break a}l=f+((aa(c,g)|0)+J<<3)|0;k=+p[l>>3];l=h+((aa(c,i)|0)<<3)+(E<<3)|0;if(r){j=0;do{ca=l+(j<<3)|0;p[ca>>3]=k*+p[t+(j<<3)>>3]+ +p[ca>>3];j=j+1|0}while((j|0)!=(F|0))}c=c+1|0;if((c|0)>=(b|0))break b}}else l=0;do{c=aa(l,g)|0;if(I){if(!s){c=30;break a}m=+p[f+(c+J<<3)>>3];k=+p[f+(c+Q<<3)>>3];j=h+((aa(l,i)|0)<<3)+(E<<3)|0;if(r){c=0;do{ca=j+(c<<3)|0;p[ca>>3]=+p[ca>>3]+(m*+p[t+(c<<3)>>3]+k*+p[o+(c<<3)>>3]);c=c+1|0}while((c|0)!=(F|0))}}else{if(!s){c=34;break a}m=+p[f+(c+J<<3)>>3];n=+p[f+(c+Q<<3)>>3];k=+p[f+(c+S<<3)>>3];j=h+((aa(l,i)|0)<<3)+(E<<3)|0;if(r){c=0;do{ca=j+(c<<3)|0;p[ca>>3]=+p[ca>>3]+(m*+p[t+(c<<3)>>3]+n*+p[o+(c<<3)>>3]+k*+p[q+(c<<3)>>3]);c=c+1|0}while((c|0)!=(F|0))}}l=l+1|0}while((l|0)<(b|0))}while(0);E=E+512|0;if((E|0)>=(a|0)){c=3;break}}if((c|0)==3)return;else if((c|0)==28)Oa(14697,13988,163,14058);else if((c|0)==30)Oa(14697,13988,163,14058);else if((c|0)==34)Oa(14697,13988,163,14058)}function Ci(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0.0,m=0,n=0.0;a=j+i|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[h+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);c=k[h>>2]|0;a=k[c+(a<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[b+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);m=k[b>>2]|0;l=+p[m+(a<<3)>>3];h=aa(j,f)|0;h=j+1+h+(k[e>>2]|0)|0;k[e>>2]=h;h=(k[d>>2]|0)+(h<<3)|0;b=c+(i<<2)+(j<<2)|0;c=b+4|0;if((g|0)>1){a=0;while(1){j=b;b=b+8|0;d=h+16|0;i=m+(k[c>>2]<<3)|0;c=m+(k[b>>2]<<3)|0;n=+p[c>>3]-l*+p[h+8>>3];p[i>>3]=+p[i>>3]-l*+p[h>>3];p[c>>3]=n;a=a+2|0;c=j+12|0;if((a|1|0)>=(g|0)){h=d;break}else h=d}}else a=0;if((a|0)>=(g|0))return;g=m+(k[c>>2]<<3)|0;p[g>>3]=+p[g>>3]-l*+p[h>>3];return}function Di(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0;v=j+i|0;x=h+4|0;l=k[x>>2]|0;m=k[h>>2]|0;y=b+4|0;n=k[y>>2]|0;o=k[b>>2]|0;u=c+4|0;q=k[u>>2]|0;t=k[c>>2]|0;if(!((v|0)>-1&(l|0)>(v|0)))Oa(16605,15693,425,29764);i=k[m+(v<<2)>>2]|0;if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);if((q|0)<=0)Oa(16605,15693,425,29764);s=+p[o+(i<<3)>>3];p[t>>3]=s;w=v+1|0;if((l|0)<=(w|0))Oa(16605,15693,425,29764);i=k[m+(w<<2)>>2]|0;if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);if((q|0)<=1)Oa(16605,15693,425,29764);r=+p[o+(i<<3)>>3];m=t+8|0;p[m>>3]=r;l=(aa(j,f)|0)+j|0;l=l+(k[e>>2]|0)|0;k[e>>2]=l;i=k[d>>2]|0;if((f|0)<=-1)Oa(19264,19297,66,19366);if((a|0)!=2)Oa(14066,14080,110,14157);p[m>>3]=r-s*+p[i+(l<<3)+8>>3];l=l+2|0;k[e>>2]=l;i=i+(l<<3)|0;l=(g|0)>-1;if(!(l|(i|0)==0))Oa(13818,13988,175,14058);a=t+16|0;if(!l)Oa(19264,19297,66,19366);if(g|0)iF(a|0,0,g<<3|0)|0;Bi(g,1,2,i,f,t,2,a,g);l=k[x>>2]|0;q=k[h>>2]|0;j=k[u>>2]|0;m=k[c>>2]|0;n=k[y>>2]|0;o=k[b>>2]|0;if((l|0)<=(v|0))Oa(16605,15693,425,29764);i=k[q+(v<<2)>>2]|0;if((j|0)<=0)Oa(16605,15693,425,29764);if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);p[o+(i<<3)>>3]=+p[m>>3];i=v+2|0;if((l|0)<=(w|0))Oa(16605,15693,425,29764);l=k[q+(w<<2)>>2]|0;if((j|0)<=1)Oa(16605,15693,425,29764);if(!((l|0)>-1&(n|0)>(l|0)))Oa(16605,15693,425,29764);p[o+(l<<3)>>3]=+p[m+8>>3];if((g|0)<=0)return;d=k[x>>2]|0;j=k[h>>2]|0;q=k[y>>2]|0;n=k[b>>2]|0;o=(i|0)>-1;l=0;while(1){if(!(o&(d|0)>(i|0))){i=26;break}m=k[j+(i<<2)>>2]|0;if(!((m|0)>-1&(q|0)>(m|0))){i=28;break}b=n+(m<<3)|0;p[b>>3]=+p[b>>3]-+p[a+(l<<3)>>3];l=l+1|0;if((l|0)>=(g|0)){i=30;break}else i=i+1|0}if((i|0)==26)Oa(16605,15693,425,29764);else if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30)return}function Ei(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=j+i|0;A=h+4|0;l=k[A>>2]|0;m=k[h>>2]|0;B=b+4|0;n=k[B>>2]|0;o=k[b>>2]|0;w=c+4|0;q=k[w>>2]|0;v=k[c>>2]|0;if(!((z|0)>-1&(l|0)>(z|0)))Oa(16605,15693,425,29764);i=k[m+(z<<2)>>2]|0;if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);if((q|0)<=0)Oa(16605,15693,425,29764);u=+p[o+(i<<3)>>3];p[v>>3]=u;x=z+1|0;if((l|0)<=(x|0))Oa(16605,15693,425,29764);i=k[m+(x<<2)>>2]|0;if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);if((q|0)<=1)Oa(16605,15693,425,29764);t=+p[o+(i<<3)>>3];r=v+8|0;p[r>>3]=t;y=z+2|0;if((l|0)<=(y|0))Oa(16605,15693,425,29764);i=k[m+(y<<2)>>2]|0;if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);if((q|0)<=2)Oa(16605,15693,425,29764);s=+p[o+(i<<3)>>3];n=v+16|0;p[n>>3]=s;m=(aa(j,f)|0)+j|0;m=m+(k[e>>2]|0)|0;k[e>>2]=m;l=k[d>>2]|0;i=l+(m<<3)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);if((a|0)!=3)Oa(14066,14080,110,14157);t=t-u*+p[i+8>>3];p[r>>3]=t;i=i+16|0;p[n>>3]=s-(u*+p[i>>3]+t*+p[i+(f<<3)>>3]);i=m+3|0;k[e>>2]=i;i=l+(i<<3)|0;l=(g|0)>-1;if(!(l|(i|0)==0))Oa(13818,13988,175,14058);d=v+24|0;if(!l)Oa(19264,19297,66,19366);if(g|0)iF(d|0,0,g<<3|0)|0;Bi(g,1,3,i,f,v,3,d,g);l=k[A>>2]|0;q=k[h>>2]|0;r=k[w>>2]|0;m=k[c>>2]|0;n=k[B>>2]|0;o=k[b>>2]|0;if((l|0)<=(z|0))Oa(16605,15693,425,29764);i=k[q+(z<<2)>>2]|0;if((r|0)<=0)Oa(16605,15693,425,29764);if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);p[o+(i<<3)>>3]=+p[m>>3];if((l|0)<=(x|0))Oa(16605,15693,425,29764);i=k[q+(x<<2)>>2]|0;if((r|0)<=1)Oa(16605,15693,425,29764);if(!((i|0)>-1&(n|0)>(i|0)))Oa(16605,15693,425,29764);p[o+(i<<3)>>3]=+p[m+8>>3];i=z+3|0;if((l|0)<=(y|0))Oa(16605,15693,425,29764);l=k[q+(y<<2)>>2]|0;if((r|0)<=2)Oa(16605,15693,425,29764);if(!((l|0)>-1&(n|0)>(l|0)))Oa(16605,15693,425,29764);p[o+(l<<3)>>3]=+p[m+16>>3];if((g|0)<=0)return;j=k[A>>2]|0;r=k[h>>2]|0;q=k[B>>2]|0;n=k[b>>2]|0;o=(i|0)>-1;l=0;while(1){if(!(o&(j|0)>(i|0))){i=26;break}m=k[r+(i<<2)>>2]|0;if(!((m|0)>-1&(q|0)>(m|0))){i=28;break}b=n+(m<<3)|0;p[b>>3]=+p[b>>3]-+p[d+(l<<3)>>3];l=l+1|0;if((l|0)>=(g|0)){i=30;break}else i=i+1|0}if((i|0)==26)Oa(16605,15693,425,29764);else if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30)return}function Fi(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+48|0;x=D+44|0;B=D+32|0;y=D+24|0;z=D;C=j+i|0;A=(a|0)>0;a:do if(A){n=k[h+4>>2]|0;o=k[h>>2]|0;q=k[b+4>>2]|0;r=k[c+4>>2]|0;s=k[b>>2]|0;t=k[c>>2]|0;v=(C|0)>-1;i=C;m=0;while(1){if(!(v&(n|0)>(i|0))){i=4;break}w=k[o+(i<<2)>>2]|0;if(!((w|0)>-1&(q|0)>(w|0))){i=6;break}if((r|0)<=(m|0)){i=8;break}p[t+(m<<3)>>3]=+p[s+(w<<3)>>3];m=m+1|0;if((m|0)>=(a|0))break a;else i=i+1|0}if((i|0)==4)Oa(16605,15693,425,29764);else if((i|0)==6)Oa(16605,15693,425,29764);else if((i|0)==8)Oa(16605,15693,425,29764)}while(0);i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<3)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);m=(a|0)>-1;if(!(m|(i|0)==0))Oa(13818,13988,175,14058);k[B>>2]=k[c>>2];n=B+4|0;k[n>>2]=a;if(!m)Oa(14697,13988,163,14058);k[z>>2]=i;k[z+4>>2]=a;k[z+8>>2]=a;k[z+12>>2]=f;k[y>>2]=z;k[y+4>>2]=B;Li(B,y,x);i=(k[e>>2]|0)+a|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<3)|0;if(!((g|a|0)>-1|(i|0)==0))Oa(13818,13988,175,14058);j=(k[c>>2]|0)+(a<<3)|0;if((g|0)<=-1)Oa(19264,19297,66,19366);if(g|0)iF(j|0,0,g<<3|0)|0;Bi(g,1,a,i,f,k[B>>2]|0,k[n>>2]|0,j,g);b:do if(A){t=k[h+4>>2]|0;v=k[h>>2]|0;w=k[c+4>>2]|0;o=k[c>>2]|0;q=k[b+4>>2]|0;r=k[b>>2]|0;s=(C|0)>-1;i=C;m=0;while(1){n=i+1|0;if(!(s&(t|0)>(i|0))){i=27;break}i=k[v+(i<<2)>>2]|0;if((w|0)<=(m|0)){i=29;break}if(!((i|0)>-1&(q|0)>(i|0))){i=31;break}p[r+(i<<3)>>3]=+p[o+(m<<3)>>3];m=m+1|0;if((m|0)>=(a|0)){l=n;break b}else i=n}if((i|0)==27)Oa(16605,15693,425,29764);else if((i|0)==29)Oa(16605,15693,425,29764);else if((i|0)==31)Oa(16605,15693,425,29764)}else l=C;while(0);if((g|0)<=0){u=D;return}s=k[h+4>>2]|0;q=k[h>>2]|0;r=k[b+4>>2]|0;n=k[b>>2]|0;o=(l|0)>-1;i=0;while(1){if(!(o&(s|0)>(l|0))){i=34;break}m=k[q+(l<<2)>>2]|0;if(!((m|0)>-1&(r|0)>(m|0))){i=36;break}b=n+(m<<3)|0;p[b>>3]=+p[b>>3]-+p[j+(i<<3)>>3];i=i+1|0;if((i|0)>=(g|0)){i=38;break}else l=l+1|0}if((i|0)==34)Oa(16605,15693,425,29764);else if((i|0)==36)Oa(16605,15693,425,29764);else if((i|0)==38){u=D;return}}function Gi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;b=k[b+4>>2]|0;l=k[b+8>>2]|0;h=k[a+4>>2]|0;if((h|0)!=(k[m+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(l|0)?(k[a+8>>2]|0)!=(l|0):0)Oa(14445,14320,257,12780);i=k[a>>2]|0;j=k[b>>2]|0;if((i|0)==(j|0)){c=k[b+12>>2]|0;if((k[a+12>>2]|0)!=(c|0))d=8}else{c=k[b+12>>2]|0;d=8}if((d|0)==8){if((h|0)!=(k[b+4>>2]|0))Oa(14445,14320,257,12780);if((l|0)!=(k[b+8>>2]|0))Oa(14445,14320,257,12780);e=k[a+12>>2]|0;if((h|0)>0&(l|0)>0){b=0;do{f=aa(b,e)|0;g=aa(b,c)|0;d=0;do{p[i+(d+f<<3)>>3]=+p[j+(d+g<<3)>>3];d=d+1|0}while((d|0)!=(h|0));b=b+1|0}while((b|0)!=(l|0))}}l=k[m+8>>2]|0;if((l|0)==(h|0)?(l|0)==(k[m+4>>2]|0):0){Hi(m,a);return}else Oa(19710,19864,170,18516)}function Hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;Ji(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;Ii(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function Ii(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;var h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0.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;_=u;u=u+16|0;X=_+10|0;Y=_+9|0;Z=_+8|0;U=_;W=k[g+16>>2]|0;T=k[g+8>>2]|0;T=(T|0)<(a|0)?T:a;h=aa(T,W)|0;m=aa(W,b)|0;if(h>>>0>536870911){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}j=k[g>>2]|0;l=h<<3;if(!j)do if(l>>>0>=131073){h=Oq(l+16|0)|0;j=h+16&-16;if(!h){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}k[j+-4>>2]=h;if(!j){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}else{h=k[g>>2]|0;break}}else{j=u;u=u+((1*(l+15|0)|0)+15&-16)|0;j=j+15&-16;h=0}while(0);else h=j;S=(h|0)==0?j:0;R=l>>>0>131072;if(m>>>0>536870911){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}g=g+4|0;l=k[g>>2]|0;m=m<<3;if(!l)do if(m>>>0>=131073){h=Oq(m+16|0)|0;l=h+16&-16;if(!h){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}k[l+-4>>2]=h;if(!l){_=Kb(4)|0;cF(_);Cc(_|0,2032,79)}else{h=k[g>>2]|0;break}}else{l=u;u=u+((1*(m+15|0)|0)+15&-16)|0;l=l+15&-16;h=0}while(0);else h=l;Q=(h|0)==0?l:0;O=m>>>0>131072;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}P=(b|0)>0;if(P)h=((((k[7995]|0)>>>0)/(((f|0)<(a|0)?a:f)<<5>>>0)|0|0)/4|0)<<2;else h=0;I=(h|0)>4?h:4;a:do if((a|0)>0){J=U+4|0;K=U+4|0;L=U+4|0;M=U+4|0;N=U+4|0;G=0;do{H=a-G|0;H=(W|0)<(H|0)?W:H;if(P){F=(H|0)>0;w=0;do{z=b-w|0;z=(I|0)<(z|0)?I:z;if(F){A=z+w|0;B=(z|0)>0;C=l+((aa(w,H)|0)<<3)|0;D=aa(w,f)|0;x=0;do{n=H-x|0;y=(n|0)<4?n:4;E=x+G|0;if((n|0)>0?(V=y+-1|0,B):0){h=0;do{o=h+E|0;q=V-h|0;r=o+1|0;s=c+((aa(o,d)|0)+r<<3)|0;if((q|0)>0){m=w;do{v=aa(m,f)|0;t=+p[e+(v+o<<3)>>3];v=e+(v+r<<3)|0;g=0;do{$=v+(g<<3)|0;p[$>>3]=+p[$>>3]-t*+p[s+(g<<3)>>3];g=g+1|0}while((g|0)<(q|0));m=m+1|0}while((m|0)<(A|0))}h=h+1|0}while((y|0)>(h|0))}h=n-y|0;k[U>>2]=e+(E+D<<3);k[L>>2]=f;Ki(Z,C,U,y,z,H,x);if((h|0)>0){$=y+E|0;E=c+($+(aa(E,d)|0)<<3)|0;k[U>>2]=E;k[M>>2]=d;ag(Y,j,U,y,h,0,0);k[U>>2]=e+($+D<<3);k[N>>2]=f;cg(X,U,j,C,h,y,z,-1.0,y,H,0,x)}x=x+4|0}while((H|0)>(x|0))}w=w+I|0}while((w|0)<(b|0))}h=G;G=G+W|0;n=(G|0)<(a|0);if(!n)break a;m=aa(h,d)|0;h=G;do{g=a-h|0;g=(g|0)<(T|0)?g:T;if((g|0)>0){k[U>>2]=c+(h+m<<3);k[J>>2]=d;ag(Y,j,U,H,g,0,0);k[U>>2]=e+(h<<3);k[K>>2]=f;cg(X,U,j,l,g,H,b,-1.0,-1,-1,0,0)}h=h+T|0}while((h|0)<(a|0))}while(n)}while(0);if(!((Q|0)==0|O^1))Pq(k[Q+-4>>2]|0);if((S|0)==0|R^1){u=_;return}Pq(k[S+-4>>2]|0);u=_;return}function Ji(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,j=0,l=0,m=0,n=0,o=0;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}m=k[7994]|0;o=k[7995]|0;n=k[7996]|0;if((d|0)>1){f=(m+-32|0)/160|0;f=(f|0)<320?f:320;e=k[a>>2]|0;if((f|0)<(e|0)){e=f-((f|0)%8|0)|0;k[a>>2]=e}e=((o-m|0)>>>0)/(e<<5>>>0)|0;f=k[c>>2]|0;h=d+-1|0;g=(h+f|0)/(d|0)|0;if((e|0)>(g|0)){e=g+3|0;e=e-((e|0)%4|0)|0;e=(e|0)<(f|0)?e:f}else e=e-((e|0)%4|0)|0;k[c>>2]=e;if((n|0)<=(o|0))return;f=((n-o|0)>>>0)/((aa(d<<3,k[a>>2]|0)|0)>>>0)|0;g=k[b>>2]|0;e=(h+g|0)/(d|0)|0;if((f|0)>0&(f|0)<(e|0)){k[b>>2]=f;return}else{k[b>>2]=(e|0)<(g|0)?e:g;return}}e=k[b>>2]|0;f=k[c>>2]|0;j=(e|0)<(f|0)?f:e;l=k[a>>2]|0;if((((l|0)<(j|0)?j:l)|0)<48)return;d=m+-32|0;j=((d|0)/160|0)&-8;j=(j|0)>1?j:1;if((l|0)>(j|0)){e=(l|0)%(j|0)|0;if(!e)e=j;else e=j-(((j+-1-e|0)/((((l|0)/(j|0)|0)<<3)+8|0)|0)<<3)|0;k[a>>2]=e;a=k[b>>2]|0;g=e;h=k[c>>2]|0}else{a=e;g=l;h=f}d=d-(aa(a<<3,g)|0)|0;e=(d|0)<(g<<5|0);j=((e?4718592:d)>>>0)/((e?j<<5:g<<3)>>>0)|0;e=1572864/(g<<4>>>0)|0;e=((j|0)<(e|0)?j:e)&-4;if((h|0)>(e|0)){f=(h|0)%(e|0)|0;if(f)e=e-(((e-f|0)/((((h|0)/(e|0)|0)<<2)+4|0)|0)<<2)|0;k[c>>2]=e;return}if((l|0)!=(g|0))return;e=aa(l<<3,h)|0;if((e|0)<1025){f=a;e=m}else{e=(n|0)!=0&(e|0)<32769;f=e?((a|0)<576?a:576):a;e=e?o:1572864}e=(e>>>0)/((l*24|0)>>>0)|0;e=(f|0)<(e|0)?f:e;if(!e)return;f=(a|0)%(e|0)|0;if(f)e=e-((e-f|0)/(((a|0)/(e|0)|0)+1|0)|0)|0;k[b>>2]=e;return}function Ki(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;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if((f|0)<(d|0)|(f|0)<(g|0))Oa(15454,15545,1906,29764);l=((e|0)/4|0)<<2;do if((e|0)>3){m=g<<2;n=k[c>>2]|0;o=k[c+4>>2]|0;q=f-d-g<<2;if((d|0)<=0){w=f<<2;a=d<<2;a=(aa((((l|0)>4?l:4)+-1|0)>>>2,w-a|0)|0)+w-a|0;break}r=m+(d<<2)|0;w=(l|0)>4?l:4;h=0;i=0;while(1){s=n+((aa(o,h)|0)<<3)|0;t=n+((aa(o,h|1)|0)<<3)|0;u=n+((aa(o,h|2)|0)<<3)|0;v=n+((aa(o,h|3)|0)<<3)|0;a=0;j=i+m|0;while(1){p[b+(j<<3)>>3]=+p[s+(a<<3)>>3];p[b+(j+1<<3)>>3]=+p[t+(a<<3)>>3];p[b+(j+2<<3)>>3]=+p[u+(a<<3)>>3];p[b+(j+3<<3)>>3]=+p[v+(a<<3)>>3];a=a+1|0;if((a|0)==(d|0))break;else j=j+4|0}h=h+4|0;if((h|0)>=(l|0))break;else i=r+i+q|0}a=aa(w,f)|0}else a=0;while(0);if((l|0)>=(e|0))return;n=k[c>>2]|0;m=k[c+4>>2]|0;if((d|0)<=0)return;while(1){j=n+((aa(m,l)|0)<<3)|0;h=0;i=a+g|0;while(1){p[b+(i<<3)>>3]=+p[j+(h<<3)>>3];h=h+1|0;if((h|0)==(d|0))break;else i=i+1|0}l=l+1|0;if((l|0)==(e|0))break;else a=a+f|0}return}function Li(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=k[b>>2]|0;f=k[a+4>>2]|0;if((f|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);c=k[b+4>>2]|0;b=k[a>>2]|0;d=k[c>>2]|0;c=k[c+4>>2]|0;if(!((b|0)==(d|0)&(f|0)==(c|0))){if((f|0)!=(c|0))Oa(14445,14320,257,12780);if((f|0)>0){c=0;do{p[b+(c<<3)>>3]=+p[d+(c<<3)>>3];c=c+1|0}while((c|0)!=(f|0))}}d=k[e+8>>2]|0;if((d|0)==(f|0)?(d|0)==(k[e+4>>2]|0):0){Mi(e,a);return}else Oa(19710,19864,170,18516)}function Mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=u;c=k[b+4>>2]|0;if(c>>>0>536870911){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}d=k[b>>2]|0;e=c<<3;if(!d)do if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d+-4>>2]=c;if(!d){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else{c=k[b>>2]|0;break}}else{d=u;u=u+((1*(e+15|0)|0)+15&-16)|0;d=d+15&-16;c=0}while(0);else c=d;c=(c|0)==0?d:0;Ni(k[a+8>>2]|0,k[a>>2]|0,k[a+12>>2]|0,d);if((c|0)==0|e>>>0>131072^1){u=f;return}Pq(k[c+-4>>2]|0);u=f;return}function Ni(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0;v=u;u=u+16|0;r=v+8|0;s=v;if((c|0)<=-1)Oa(19264,19297,66,19366);t=(a|0)>-1;if(!(t|(b|0)==0))Oa(13818,13988,175,14058);if((a|0)<=0){u=v;return}n=r+4|0;o=s+4|0;l=0;a:while(1){j=a-l|0;m=(j|0)<8?j:8;q=m+l|0;b:do if((j|0)>0){if(t){h=0;while(1){e=h+l|0;j=m-h|0;i=j+-1|0;f=e+1|0;if((j|0)>1){if((e|0)>=(a|0)){e=21;break a}j=b+((aa(e,c)|0)<<3)+(f<<3)|0;if((i|f|0)<0|(a-i|0)<=(e|0)){e=23;break a}g=+p[d+(e<<3)>>3];f=d+(f<<3)|0;e=0;do{w=f+(e<<3)|0;p[w>>3]=+p[w>>3]-g*+p[j+(e<<3)>>3];e=e+1|0}while((e|0)!=(i|0))}h=h+1|0;if((m|0)<=(h|0))break b}}else h=0;do{e=h+l|0;w=m-h|0;i=w+-1|0;f=e+1|0;if((w|0)>1){if(b+((aa(e,c)|0)<<3)|0){e=19;break a}if((e|0)>=(a|0)){e=21;break a}j=0+(f<<3)|0;if((i|f|0)<0|(a-i|0)<=(e|0)){e=23;break a}g=+p[d+(e<<3)>>3];f=d+(f<<3)|0;e=0;do{w=f+(e<<3)|0;p[w>>3]=+p[w>>3]-g*+p[j+(e<<3)>>3];e=e+1|0}while((e|0)!=(i|0))}h=h+1|0}while((m|0)>(h|0))}while(0);e=a-q|0;if((e|0)>0){w=b+(q+(aa(l,c)|0)<<3)|0;k[r>>2]=w;k[n>>2]=c;k[s>>2]=d+(l<<3);k[o>>2]=1;Oi(e,m,r,s,d+(q<<3)|0,1,-1.0)}l=l+8|0;if((l|0)>=(a|0)){e=7;break}}if((e|0)==7){u=v;return}else if((e|0)==19)Oa(13818,13988,175,14058);else if((e|0)==21)Oa(13577,13744,122,13812);else if((e|0)==23)Oa(14177,13744,147,13812)}function Oi(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;var h=0,i=0.0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;w=c+4|0;f=((b|0)/4|0)<<2;if((b|0)>3?(t=k[d>>2]|0,u=k[c>>2]|0,v=k[w>>2]|0,(a|0)>0):0){j=0;do{i=+p[t+(j<<3)>>3]*g;m=j|1;o=+p[t+(m<<3)>>3]*g;n=j|2;q=+p[t+(n<<3)>>3]*g;s=j|3;r=+p[t+(s<<3)>>3]*g;l=u+((aa(v,j)|0)<<3)|0;m=u+((aa(v,m)|0)<<3)|0;n=u+((aa(v,n)|0)<<3)|0;s=u+((aa(v,s)|0)<<3)|0;h=0;do{x=e+(h<<3)|0;y=i*+p[l+(h<<3)>>3]+ +p[x>>3];p[x>>3]=y;y=y+o*+p[m+(h<<3)>>3];p[x>>3]=y;y=y+q*+p[n+(h<<3)>>3];p[x>>3]=y;p[x>>3]=y+r*+p[s+(h<<3)>>3];h=h+1|0}while((h|0)!=(a|0));j=j+4|0}while((j|0)<(f|0))}if((f|0)>=(b|0))return;n=k[d>>2]|0;m=k[c>>2]|0;l=k[w>>2]|0;if((a|0)<=0)return;do{i=+p[n+(f<<3)>>3]*g;j=m+((aa(l,f)|0)<<3)|0;h=0;do{x=e+(h<<3)|0;p[x>>3]=+p[x>>3]+i*+p[j+(h<<3)>>3];h=h+1|0}while((h|0)!=(a|0));f=f+1|0}while((f|0)!=(b|0));return}function Pi(a,b,c,d,e,f,g,h,i,j,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((o|0)<=-1)Oa(16605,15693,425,29764);N=i+4|0;if((k[N>>2]|0)<=(o|0))Oa(16605,15693,425,29764);O=(k[i>>2]|0)+(o<<2)|0;r=k[O>>2]|0;k[O>>2]=b;O=c+4|0;if((k[O>>2]|0)<=(o|0))Oa(16605,15693,425,29764);q=k[(k[c>>2]|0)+(o<<2)>>2]|0;if((q|0)==-1){a=k[n>>2]|0;k[n>>2]=a+1;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[e+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[e>>2]|0)+(a<<2)>>2]=o;a=k[n>>2]|0;o=k[p+8>>2]|0;q=o+48|0;if((a|0)>=(k[q>>2]|0))zi(k[p+12>>2]|0,e,q,a,0,o+88|0)|0;if(((k[p>>2]|0)+-1|0)==(r|0))return;k[k[p+4>>2]>>2]=-1;return}if((q|0)<=-1)Oa(16605,15693,425,29764);K=m+12|0;if((k[K>>2]|0)<=(q|0))Oa(16605,15693,425,29764);L=m+8|0;M=k[(k[L>>2]|0)+(q<<2)>>2]|0;a=M+1|0;if((M|0)<=-2)Oa(16605,15693,425,29764);M=m+4|0;if((k[M>>2]|0)<=(a|0))Oa(16605,15693,425,29764);r=k[(k[m>>2]|0)+(a<<2)>>2]|0;s=r+-1|0;if((r|0)<=0)Oa(16605,15693,425,29764);J=g+4|0;if((k[J>>2]|0)<(r|0))Oa(16605,15693,425,29764);o=(k[g>>2]|0)+(s<<2)|0;a=k[o>>2]|0;if((a|0)!=-1){if((a|0)<=(q|0))return;k[o>>2]=q;return}I=j+4|0;if((k[I>>2]|0)<(r|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(s<<2)>>2]=-1;if((k[J>>2]|0)<(r|0))Oa(16605,15693,425,29764);k[o>>2]=q;F=m+44|0;if((k[F>>2]|0)<(r|0))Oa(16605,15693,425,29764);G=m+40|0;H=h+4|0;if((k[H>>2]|0)<(r|0))Oa(16605,15693,425,29764);y=f+4|0;z=l+4|0;A=m+28|0;B=m+24|0;C=e+4|0;D=p+8|0;E=p+4|0;x=p+12|0;a=s;o=(k[G>>2]|0)+(s<<2)|0;a:while(1){o=k[o>>2]|0;q=k[(k[h>>2]|0)+(a<<2)>>2]|0;b:do if((o|0)<(q|0))while(1){w=(o|0)>-1;c:while(1){if(!(w&(k[A>>2]|0)>(o|0))){a=39;break a}s=k[(k[B>>2]|0)+(o<<2)>>2]|0;o=o+1|0;if((s|0)<=-1){a=42;break a}if((k[N>>2]|0)<=(s|0)){a=42;break a}r=(k[i>>2]|0)+(s<<2)|0;u=k[r>>2]|0;do if((u|0)!=(b|0)){k[r>>2]=b;if((k[O>>2]|0)<=(s|0)){a=45;break a}v=k[(k[c>>2]|0)+(s<<2)>>2]|0;if((v|0)==-1){r=k[n>>2]|0;k[n>>2]=r+1;if(!((r|0)>-1?(k[C>>2]|0)>(r|0):0)){a=48;break a}k[(k[e>>2]|0)+(r<<2)>>2]=s;r=k[n>>2]|0;s=k[D>>2]|0;t=s+48|0;if((r|0)>=(k[t>>2]|0))zi(k[x>>2]|0,e,t,r,0,s+88|0)|0;if(((k[p>>2]|0)+-1|0)==(u|0))break;k[k[E>>2]>>2]=-1;break}if(!((v|0)>-1?(k[K>>2]|0)>(v|0):0)){a=54;break a}u=k[(k[L>>2]|0)+(v<<2)>>2]|0;r=u+1|0;if(!((u|0)>-2?(k[M>>2]|0)>(r|0):0)){a=56;break a}r=k[(k[m>>2]|0)+(r<<2)>>2]|0;u=r+-1|0;if((r|0)<=0){a=59;break a}if((k[J>>2]|0)<(r|0)){a=59;break a}s=(k[g>>2]|0)+(u<<2)|0;t=k[s>>2]|0;if((t|0)==-1)break c;if((t|0)<=(v|0))break;k[s>>2]=v}while(0);if((o|0)>=(q|0))break b}if(!((a|0)>-1?(k[z>>2]|0)>(a|0):0)){a=65;break a}k[(k[l>>2]|0)+(a<<2)>>2]=o;if((k[I>>2]|0)<(r|0)){a=67;break a}k[(k[j>>2]|0)+(u<<2)>>2]=a;if((k[J>>2]|0)<(r|0)){a=69;break a}k[s>>2]=v;if((k[F>>2]|0)<(r|0)){a=71;break a}if((k[H>>2]|0)<(r|0)){a=73;break a}o=k[(k[G>>2]|0)+(u<<2)>>2]|0;q=k[(k[h>>2]|0)+(u<<2)>>2]|0;if((o|0)>=(q|0)){a=u;break}else a=u}while(0);o=k[d>>2]|0;if(!((o|0)>-1?(k[y>>2]|0)>(o|0):0)){a=76;break}k[(k[f>>2]|0)+(o<<2)>>2]=a;k[d>>2]=(k[d>>2]|0)+1;if(!((a|0)>-1?(k[I>>2]|0)>(a|0):0)){a=78;break}o=k[(k[j>>2]|0)+(a<<2)>>2]|0;if((o|0)==-1){a=82;break}if(!((o|0)>-1?(k[z>>2]|0)>(o|0):0)){a=81;break}if((k[H>>2]|0)>(o|0)){a=o;o=(k[l>>2]|0)+(o<<2)|0}else{a=35;break}}switch(a|0){case 35:{Oa(16605,15693,425,29764);break}case 39:{Oa(16605,15693,425,29764);break}case 42:{Oa(16605,15693,425,29764);break}case 45:{Oa(16605,15693,425,29764);break}case 48:{Oa(16605,15693,425,29764);break}case 54:{Oa(16605,15693,425,29764);break}case 56:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 69:{Oa(16605,15693,425,29764);break}case 71:{Oa(16605,15693,425,29764);break}case 73:{Oa(16605,15693,425,29764);break}case 76:{Oa(16605,15693,425,29764);break}case 78:{Oa(16605,15693,425,29764);break}case 81:{Oa(16605,15693,425,29764);break}case 82:return}}function Qi(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0.0,m=0,n=0.0;a=j+i|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[h+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);c=k[h>>2]|0;a=k[c+(a<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[b+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);m=k[b>>2]|0;l=+p[m+(a<<3)>>3];h=aa(j,f)|0;h=j+1+h+(k[e>>2]|0)|0;k[e>>2]=h;h=(k[d>>2]|0)+(h<<3)|0;b=c+(i<<2)+(j<<2)|0;c=b+4|0;if((g|0)>1){a=0;while(1){j=b;b=b+8|0;d=h+16|0;i=m+(k[c>>2]<<3)|0;c=m+(k[b>>2]<<3)|0;n=+p[c>>3]-l*+p[h+8>>3];p[i>>3]=+p[i>>3]-l*+p[h>>3];p[c>>3]=n;a=a+2|0;c=j+12|0;if((a|1|0)>=(g|0)){h=d;break}else h=d}}else a=0;if((a|0)>=(g|0))return;g=m+(k[c>>2]<<3)|0;p[g>>3]=+p[g>>3]-l*+p[h>>3];return}function Ri(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+48|0;w=C+44|0;A=C+32|0;x=C+24|0;y=C;B=j+i|0;z=(a|0)>0;a:do if(z){n=k[h+4>>2]|0;o=k[h>>2]|0;q=b+4|0;r=k[c+4>>2]|0;s=k[c>>2]|0;t=(B|0)>-1;i=B;m=0;while(1){if(!(t&(n|0)>(i|0))){i=4;break}v=k[o+(i<<2)>>2]|0;if((v|0)<=-1){i=7;break}if((k[q>>2]|0)<=(v|0)){i=7;break}if((r|0)<=(m|0)){i=9;break}p[s+(m<<3)>>3]=+p[(k[b>>2]|0)+(v<<3)>>3];m=m+1|0;if((m|0)>=(a|0))break a;else i=i+1|0}if((i|0)==4)Oa(16605,15693,425,29764);else if((i|0)==7)Oa(16605,15693,425,29764);else if((i|0)==9)Oa(16605,15693,425,29764)}while(0);i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<3)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);m=(a|0)>-1;if(!(m|(i|0)==0))Oa(13818,13988,175,14058);k[A>>2]=k[c>>2];n=A+4|0;k[n>>2]=a;if(!m)Oa(14697,13988,163,14058);k[y>>2]=i;k[y+4>>2]=a;k[y+8>>2]=a;k[y+12>>2]=f;k[x>>2]=y;k[x+4>>2]=A;Li(A,x,w);i=(k[e>>2]|0)+a|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<3)|0;if(!((g|a|0)>-1|(i|0)==0))Oa(13818,13988,175,14058);j=(k[c>>2]|0)+(a<<3)|0;if((g|0)<=-1)Oa(19264,19297,66,19366);if(g|0)iF(j|0,0,g<<3|0)|0;Bi(g,1,a,i,f,k[A>>2]|0,k[n>>2]|0,j,g);b:do if(z){s=k[h+4>>2]|0;t=k[h>>2]|0;v=k[c+4>>2]|0;o=k[c>>2]|0;q=b+4|0;r=(B|0)>-1;i=B;m=0;while(1){n=i+1|0;if(!(r&(s|0)>(i|0))){i=28;break}i=k[t+(i<<2)>>2]|0;if((v|0)<=(m|0)){i=30;break}if((i|0)<=-1){i=33;break}if((k[q>>2]|0)<=(i|0)){i=33;break}p[(k[b>>2]|0)+(i<<3)>>3]=+p[o+(m<<3)>>3];m=m+1|0;if((m|0)>=(a|0)){l=n;break b}else i=n}if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30)Oa(16605,15693,425,29764);else if((i|0)==33)Oa(16605,15693,425,29764)}else l=B;while(0);if((g|0)<=0){u=C;return}r=k[h+4>>2]|0;n=k[h>>2]|0;o=b+4|0;q=(l|0)>-1;i=0;while(1){if(!(q&(r|0)>(l|0))){i=36;break}m=k[n+(l<<2)>>2]|0;if((m|0)<=-1){i=39;break}if((k[o>>2]|0)<=(m|0)){i=39;break}h=(k[b>>2]|0)+(m<<3)|0;p[h>>3]=+p[h>>3]-+p[j+(i<<3)>>3];i=i+1|0;if((i|0)>=(g|0)){i=41;break}else l=l+1|0}if((i|0)==36)Oa(16605,15693,425,29764);else if((i|0)==39)Oa(16605,15693,425,29764);else if((i|0)==41){u=C;return}}function Si(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=k[b>>2]|0;f=k[a+4>>2]|0;if((f|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);c=k[b+4>>2]|0;b=k[a>>2]|0;d=k[c>>2]|0;if(!((b|0)==(d|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0)){if((f|0)!=(k[c+4>>2]|0))Oa(14445,14320,257,12780);if((f|0)>0){c=0;do{p[b+(c<<3)>>3]=+p[d+(c<<3)>>3];c=c+1|0}while((c|0)!=(f|0))}}d=k[e+8>>2]|0;if((d|0)==(f|0)?(d|0)==(k[e+4>>2]|0):0){Ti(e,a);return}else Oa(19710,19864,170,18516)}function Ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=u;c=k[b+4>>2]|0;if(c>>>0>536870911){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}d=k[b>>2]|0;e=c<<3;if(!d)do if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d+-4>>2]=c;if(!d){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else{c=k[b>>2]|0;break}}else{d=u;u=u+((1*(e+15|0)|0)+15&-16)|0;d=d+15&-16;c=0}while(0);else c=d;c=(c|0)==0?d:0;Ni(k[a+8>>2]|0,k[a>>2]|0,k[a+12>>2]|0,d);if((c|0)==0|e>>>0>131072^1){u=f;return}Pq(k[c+-4>>2]|0);u=f;return}function Ui(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;var h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;x=c+4|0;f=((b|0)/4|0)<<2;if((b|0)>3?(t=k[d>>2]|0,u=k[d+4>>2]|0,v=k[c>>2]|0,w=k[x>>2]|0,(a|0)>0):0){j=0;do{m=t+((aa(u,j)|0)<<3)|0;i=+p[m>>3]*g;m=j|1;n=t+((aa(u,m)|0)<<3)|0;q=+p[n>>3]*g;n=j|2;o=t+((aa(u,n)|0)<<3)|0;r=+p[o>>3]*g;o=j|3;l=t+((aa(u,o)|0)<<3)|0;s=+p[l>>3]*g;l=v+((aa(w,j)|0)<<3)|0;m=v+((aa(w,m)|0)<<3)|0;n=v+((aa(w,n)|0)<<3)|0;o=v+((aa(w,o)|0)<<3)|0;h=0;do{y=e+(h<<3)|0;z=i*+p[l+(h<<3)>>3]+ +p[y>>3];p[y>>3]=z;z=z+q*+p[m+(h<<3)>>3];p[y>>3]=z;z=z+r*+p[n+(h<<3)>>3];p[y>>3]=z;p[y>>3]=z+s*+p[o+(h<<3)>>3];h=h+1|0}while((h|0)!=(a|0));j=j+4|0}while((j|0)<(f|0))}if((f|0)>=(b|0))return;o=k[d>>2]|0;n=k[d+4>>2]|0;m=k[c>>2]|0;l=k[x>>2]|0;if((a|0)<=0)return;do{j=o+((aa(n,f)|0)<<3)|0;i=+p[j>>3]*g;j=m+((aa(l,f)|0)<<3)|0;h=0;do{y=e+(h<<3)|0;p[y>>3]=+p[y>>3]+i*+p[j+(h<<3)>>3];h=h+1|0}while((h|0)!=(a|0));f=f+1|0}while((f|0)!=(b|0));return}function Vi(a){a=a|0;var b=0,c=0;k[a>>2]=2804;b=a+56|0;k[b>>2]=2824;c=a+4|0;k[c>>2]=2856;NA(a+36|0);br(c);Ar(a,2836);Zq(b);EA(a);return}function Wi(a){a=a|0;var b=0,c=0;b=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;k[b>>2]=2804;a=b+56|0;k[a>>2]=2824;c=b+4|0;k[c>>2]=2856;NA(b+36|0);br(c);Ar(b,2836);Zq(a);return}function Xi(a){a=a|0;var b=0,c=0;a=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;k[a>>2]=2804;b=a+56|0;k[b>>2]=2824;c=a+4|0;k[c>>2]=2856;NA(a+36|0);br(c);Ar(a,2836);Zq(b);EA(a);return}function Yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+32|0;OA(g,b)|0;f=a+44|0;k[f>>2]=0;h=a+48|0;e=k[h>>2]|0;if(e&8|0){b=i[g+11>>0]|0;if(b<<24>>24<0){b=k[g>>2]|0;c=b;d=b;b=b+(k[a+36>>2]|0)|0}else{c=g;d=g;b=g+(b&255)|0}k[f>>2]=b;k[a+8>>2]=c;k[a+12>>2]=d;k[a+16>>2]=b}if(!(e&16))return;c=g+11|0;b=i[c>>0]|0;if(b<<24>>24<0){e=k[a+36>>2]|0;k[f>>2]=(k[g>>2]|0)+e;b=(k[a+40>>2]&2147483647)+-1|0;f=e}else{e=b&255;k[f>>2]=g+e;b=10;f=e}UA(g,b,0);b=i[c>>0]|0;if(b<<24>>24<0){c=k[g>>2]|0;e=c;d=k[a+36>>2]|0}else{e=g;d=b&255;c=g}b=a+24|0;k[b>>2]=c;k[a+20>>2]=c;k[a+28>>2]=e+d;if(!(k[h>>2]&3))return;k[b>>2]=c+f;return}function Zi(a){a=a|0;k[a>>2]=2856;NA(a+32|0);br(a);return}function _i(a){a=a|0;k[a>>2]=2856;NA(a+32|0);br(a);EA(a);return}function $i(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 g=0,h=0,j=0,l=0,m=0,n=0;g=b+44|0;h=k[g>>2]|0;m=b+24|0;n=k[m>>2]|0;j=n;if(h>>>0>>0){k[g>>2]=n;l=j}else l=h;h=f&24;a:do if((h|0)!=0?!((e|0)==1&(h|0)==24):0){b:do switch(e|0){case 0:{g=0;h=0;break}case 1:if(!(f&8)){h=j-(k[b+20>>2]|0)|0;g=h;h=((h|0)<0)<<31>>31;break b}else{h=(k[b+12>>2]|0)-(k[b+8>>2]|0)|0;g=h;h=((h|0)<0)<<31>>31;break b}case 2:{g=b+32|0;if((i[g+11>>0]|0)<0)g=k[g>>2]|0;h=l-g|0;g=h;h=((h|0)<0)<<31>>31;break}default:{h=-1;g=-1;break a}}while(0);h=kF(g|0,h|0,c|0,d|0)|0;g=N;if((g|0)>=0){j=b+32|0;if((i[j+11>>0]|0)<0)j=k[j>>2]|0;d=l-j|0;c=((d|0)<0)<<31>>31;if(!((c|0)<(g|0)|(c|0)==(g|0)&d>>>0>>0)){j=f&8;if(!((h|0)==0&(g|0)==0)){if(j|0?(k[b+12>>2]|0)==0:0){h=-1;g=-1;break}if((f&16|0)!=0&(n|0)==0){h=-1;g=-1;break}}if(j|0){k[b+12>>2]=(k[b+8>>2]|0)+h;k[b+16>>2]=l}if(f&16)k[m>>2]=(k[b+20>>2]|0)+h}else{h=-1;g=-1}}else{h=-1;g=-1}}else{h=-1;g=-1}while(0);n=a;k[n>>2]=0;k[n+4>>2]=0;a=a+8|0;k[a>>2]=h;k[a+4>>2]=g;return}function aj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=c+8|0;Tc[k[(k[b>>2]|0)+16>>2]&15](a,b,k[c>>2]|0,k[c+4>>2]|0,0,d);return}function bj(a){a=a|0;var b=0,c=0,d=0;b=a+44|0;d=k[b>>2]|0;c=k[a+24>>2]|0;if(d>>>0>>0){k[b>>2]=c;d=c}if(!(k[a+48>>2]&8)){a=-1;return a|0}b=a+16|0;c=k[b>>2]|0;if(c>>>0>>0){k[b>>2]=d;c=d}b=k[a+12>>2]|0;if(b>>>0>=c>>>0){a=-1;return a|0}a=l[b>>0]|0;return a|0}function cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=a+44|0;c=k[d>>2]|0;e=k[a+24>>2]|0;if(c>>>0>>0){k[d>>2]=e;c=e}f=a+12|0;d=k[f>>2]|0;if((k[a+8>>2]|0)>>>0>=d>>>0){b=-1;return b|0}if((b|0)==-1){k[f>>2]=d+-1;k[a+16>>2]=c;b=0;return b|0}if(!(k[a+48>>2]&16)){e=b&255;d=d+-1|0;if(e<<24>>24!=(i[d>>0]|0)){b=-1;return b|0}}else{e=b&255;d=d+-1|0}k[f>>2]=d;k[a+16>>2]=c;i[d>>0]=e;return b|0}function dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;o=t;if((b|0)==-1){s=0;u=t;return s|0}p=a+12|0;q=a+8|0;r=(k[p>>2]|0)-(k[q>>2]|0)|0;s=a+24|0;j=k[s>>2]|0;m=a+28|0;c=k[m>>2]|0;if((j|0)==(c|0)){h=a+48|0;if(!(k[h>>2]&16)){s=-1;u=t;return s|0}f=a+20|0;g=k[f>>2]|0;n=a+44|0;l=(k[n>>2]|0)-g|0;e=a+32|0;YA(e,0);c=e+11|0;if((i[c>>0]|0)<0)d=(k[a+40>>2]&2147483647)+-1|0;else d=10;UA(e,d,0);c=i[c>>0]|0;if(c<<24>>24<0){d=k[e>>2]|0;c=k[a+36>>2]|0}else{d=e;c=c&255}c=d+c|0;k[f>>2]=d;k[m>>2]=c;j=d+(j-g)|0;k[s>>2]=j;d=d+l|0;k[n>>2]=d;l=n;e=n;g=c}else{d=a+44|0;l=d;h=a+48|0;e=d;d=k[d>>2]|0;g=c}f=j+1|0;k[o>>2]=f;d=k[(f>>>0>>0?e:o)>>2]|0;k[l>>2]=d;if(k[h>>2]&8|0){c=a+32|0;if((i[c+11>>0]|0)<0)c=k[c>>2]|0;k[q>>2]=c;k[p>>2]=c+r;k[a+16>>2]=d}if((j|0)==(g|0)){s=Yc[k[(k[a>>2]|0)+52>>2]&63](a,b&255)|0;u=t;return s|0}else{k[s>>2]=f;i[j>>0]=b;s=b&255;u=t;return s|0}return 0}function ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[b+48>>2]|0;if(c&16|0){c=b+44|0;d=k[c>>2]|0;e=k[b+24>>2]|0;if(d>>>0>>0)k[c>>2]=e;else e=d;c=k[b+20>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=e-c|0;if(b>>>0<=4294967279)if(b>>>0<11)i[a+11>>0]=b;else f=8;else{HA(a);f=8}if((f|0)==8){d=b+16&-16;f=CA(d)|0;k[a>>2]=f;k[a+8>>2]=d|-2147483648;k[a+4>>2]=b;a=f}if((c|0)!=(e|0)){d=a;while(1){i[d>>0]=i[c>>0]|0;c=c+1|0;if((c|0)==(e|0))break;else d=d+1|0}a=a+b|0}i[a>>0]=0;return}if(!(c&8)){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}c=k[b+8>>2]|0;e=k[b+16>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=e-c|0;if(b>>>0<=4294967279)if(b>>>0<11)i[a+11>>0]=b;else f=18;else{HA(a);f=18}if((f|0)==18){d=b+16&-16;f=CA(d)|0;k[a>>2]=f;k[a+8>>2]=d|-2147483648;k[a+4>>2]=b;a=f}if((c|0)!=(e|0)){d=a;while(1){i[d>>0]=i[c>>0]|0;c=c+1|0;if((c|0)==(e|0))break;else d=d+1|0}a=a+b|0}i[a>>0]=0;return}function fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+28>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}mf(a,d,c);c=k[b>>2]|0;d=k[c+28>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;gj(h,i,a)|0;return}mf(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;gj(h,i,a)|0;return}function gj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+96|0;D=F+56|0;A=F+28|0;E=F;if(!(i[a+8>>0]|0))Oa(20078,18907,220,18314);B=b+4|0;C=b+8|0;mf(c,k[B>>2]|0,k[C>>2]|0);d=k[C>>2]|0;a:do if((d|0)>0){p=a+140|0;n=D+4|0;o=D+8|0;l=D+16|0;m=D+20|0;h=D+24|0;j=D+28|0;q=a+144|0;r=c+4|0;s=A+4|0;t=A+12|0;v=A+16|0;w=A+20|0;x=A+24|0;y=c+8|0;z=a+144|0;g=0;while(1){e=k[B>>2]|0;f=(k[b>>2]|0)+((aa(e,g)|0)<<3)|0;if(!((e|0)>-1|(f|0)==0)){d=8;break}if((d|0)<=(g|0)){d=10;break}k[D>>2]=p;k[n>>2]=f;k[o>>2]=e;k[l>>2]=b;k[m>>2]=0;k[h>>2]=g;k[j>>2]=e;if((k[q>>2]|0)!=(e|0)){d=12;break}d=k[r>>2]|0;f=(k[c>>2]|0)+((aa(d,g)|0)<<3)|0;k[A>>2]=f;k[s>>2]=d;if(!((d|0)>-1|(f|0)==0)){d=14;break}k[t>>2]=c;k[v>>2]=0;k[w>>2]=g;k[x>>2]=d;if((k[y>>2]|0)<=(g|0)){d=16;break}if((d|0)!=(k[z>>2]|0)){d=18;break}ij(A,p,n);g=g+1|0;d=k[C>>2]|0;if((g|0)>=(d|0))break a}if((d|0)==8)Oa(13818,13988,175,14058);else if((d|0)==10)Oa(13577,13744,122,13812);else if((d|0)==12)Oa(14710,14850,97,14920);else if((d|0)==14)Oa(13818,13988,175,14058);else if((d|0)==16)Oa(13577,13744,122,13812);else if((d|0)==18)Oa(14445,14320,257,12780)}while(0);B=a+60|0;jj(B,c);k[D>>2]=B;k[D+4>>2]=a+96;hj(D,c);if((k[C>>2]|0)<=0){u=F;return 1}b=a+132|0;p=b;q=c+4|0;r=c+8|0;n=D+4|0;o=D+8|0;l=D+16|0;m=D+20|0;h=D+24|0;j=D+28|0;s=a+136|0;t=E+4|0;v=E+12|0;w=E+16|0;x=E+20|0;y=E+24|0;e=a+136|0;d=0;while(1){f=k[q>>2]|0;g=(k[c>>2]|0)+((aa(f,d)|0)<<3)|0;if(!((f|0)>-1|(g|0)==0)){d=22;break}if((k[r>>2]|0)<=(d|0)){d=24;break}k[D>>2]=p;k[n>>2]=g;k[o>>2]=f;k[l>>2]=c;k[m>>2]=0;k[h>>2]=d;k[j>>2]=f;if((k[s>>2]|0)!=(f|0)){d=26;break}k[E>>2]=g;k[t>>2]=f;k[v>>2]=c;k[w>>2]=0;k[x>>2]=d;k[y>>2]=f;if((f|0)!=(k[e>>2]|0)){d=28;break}sj(E,b,n);d=d+1|0;if((d|0)>=(k[C>>2]|0)){d=20;break}}if((d|0)==20){u=F;return 1}else if((d|0)==22)Oa(13818,13988,175,14058);else if((d|0)==24)Oa(13577,13744,122,13812);else if((d|0)==26)Oa(14710,14850,97,14920);else if((d|0)==28)Oa(14445,14320,257,12780);return 0}function hj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;O=u;u=u+64|0;E=O+52|0;H=O+32|0;I=O+24|0;J=O;K=b+8|0;L=k[K>>2]|0;M=b+4|0;N=k[M>>2]|0;d=k[a>>2]|0;c=k[d+8>>2]|0;if((c|0)<=-1){u=O;return}y=(L|0)>0;z=a+4|0;A=(N|0)>-1;B=H+4|0;C=H+8|0;D=H+12|0;w=J+4|0;x=J+8|0;F=J+12|0;G=I+4|0;a:while(1){v=k[d+32>>2]|0;t=k[v+(c<<2)>>2]|0;e=k[d+16>>2]|0;h=k[e+(t<<2)>>2]|0;v=k[v+(c+1<<2)>>2]|0;f=v-t|0;b:do if((f|0)==1){if(y){if((t|0)<=-1){s=9;break a}f=k[M>>2]|0;g=(f|0)>(t|0);if(g)e=0;else{s=9;break a}while(1){if((k[K>>2]|0)<=(e|0)){s=9;break a}s=(k[b>>2]|0)+((aa(f,e)|0)+t<<3)|0;p[s>>3]=+p[s>>3]/+p[(k[d+12>>2]|0)+(h<<3)>>3];e=e+1|0;if((e|0)>=(L|0)){s=25;break b}if(!g){s=9;break a}else d=k[a>>2]|0}}}else{e=(k[e+(t+1<<2)>>2]|0)-h|0;d=(k[d+12>>2]|0)+(h<<3)|0;if((e|0)<=-1){s=13;break a}if(!((f|0)>-1|(d|0)==0)){s=15;break a}if((t|0)<=-1){s=19;break a}if((k[M>>2]|0)<=(t|0)){s=19;break a}if((k[K>>2]|0)<=0){s=19;break a}if(!A){s=21;break a}k[H>>2]=(k[b>>2]|0)+(t<<3);k[B>>2]=f;k[C>>2]=L;if((f|L|0)<=-1){s=23;break a}k[D>>2]=N;k[J>>2]=d;k[w>>2]=f;k[x>>2]=f;k[F>>2]=e;k[I>>2]=J;k[G>>2]=H;pj(H,I,E);s=25}while(0);if((s|0)==25?(s=0,y):0){o=(v|0)>(t|0);n=0;do{if(o){m=t;do{e=k[z>>2]|0;q=k[e+28>>2]|0;r=k[e+24>>2]|0;d=k[e+20>>2]|0;f=k[d+(m<<2)>>2]|0;e=k[e+32>>2]|0;if(!e)g=k[d+(m+1<<2)>>2]|0;else g=(k[e+(m<<2)>>2]|0)+f|0;if((f|0)<(g|0)){if((m|0)<=-1){s=42;break a}h=k[M>>2]|0;i=(h|0)>(m|0);j=aa(h,n)|0;l=j+m|0;d=f;do{e=k[r+(d<<2)>>2]|0;if(!i){s=42;break a}if((k[K>>2]|0)<=(n|0)){s=42;break a}f=k[b>>2]|0;if(!((e|n|0)>-1&(h|0)>(e|0))){s=43;break a}e=f+(j+e<<3)|0;p[e>>3]=+p[e>>3]-+p[f+(l<<3)>>3]*+p[q+(d<<3)>>3];d=d+1|0}while((d|0)<(g|0))}m=m+1|0}while((m|0)<(v|0))}n=n+1|0}while((n|0)<(L|0))}if((c|0)<=0){s=3;break}c=c+-1|0;d=k[a>>2]|0}if((s|0)==3){u=O;return}else if((s|0)==9)Oa(15640,15693,365,29764);else if((s|0)==13)Oa(19264,19297,66,19366);else if((s|0)==15)Oa(13818,13988,175,14058);else if((s|0)==19)Oa(15640,15693,365,29764);else if((s|0)==21)Oa(19264,19297,66,19366);else if((s|0)==23)Oa(13818,13988,175,14058);else if((s|0)==42)Oa(15640,15693,365,29764);else if((s|0)==43)Oa(15640,15693,365,29764)}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0;f=k[c>>2]|0;g=k[c+4>>2]|0;h=k[a>>2]|0;if((h|0)==(f|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0){n=b+4|0;o=k[n>>2]|0;if((o|0)<=-1)Oa(13359,12702,312,12780);if(!o)return;c=Oq(o+16|0)|0;q=c+16&-16;if(!c){r=Kb(4)|0;cF(r);Cc(r|0,2032,79)}k[q+-4>>2]=c;if(!q){r=Kb(4)|0;cF(r);Cc(r|0,2032,79)}l=q;iF(l|0,0,o|0)|0;d=k[n>>2]|0;a:do if((d|0)>0){m=k[a>>2]|0;j=a+4|0;c=0;b:while(1){c:do if((c|0)<(d|0)){a=(c|0)>-1;while(1){if(!(a&(o|0)>(c|0))){r=17;break b}if(!(i[l+c>>0]|0)){h=c;break c}c=c+1|0;if((c|0)>=(d|0)){h=c;break}}}else h=c;while(0);if((h|0)>=(d|0)){r=29;break a}c=h+1|0;i[l+h>>0]=1;f=k[b>>2]|0;d=k[f+(h<<2)>>2]|0;if((d|0)!=(h|0)){g=m+(h<<3)|0;if((h|0)<=-1){r=26;break}do{a=m+(d<<3)|0;e=k[j>>2]|0;if(!((d|0)>-1&(e|0)>(d|0))){r=27;break b}if((e|0)<=(h|0)){r=28;break b}s=+p[a>>3];p[a>>3]=+p[g>>3];p[g>>3]=s;i[l+d>>0]=1;d=k[f+(d<<2)>>2]|0}while((d|0)!=(h|0))}d=k[n>>2]|0;if((c|0)>=(d|0))break a}if((r|0)==17)Oa(16605,15693,408,29907);else if((r|0)==26)if((d|0)>-1?(k[j>>2]|0)>(d|0):0)Oa(13577,13744,122,13812);else Oa(13577,13744,122,13812);else if((r|0)==27)Oa(13577,13744,122,13812);else if((r|0)==28)Oa(13577,13744,122,13812)}else r=29;while(0);if((r|0)==29?(q|0)==0:0)return;Pq(k[l+-4>>2]|0);return}if((g|0)<=0)return;e=k[b>>2]|0;d=k[a+4>>2]|0;c=0;while(1){a=k[e+(c<<2)>>2]|0;if(!((a|0)>-1&(d|0)>(a|0))){r=32;break}p[h+(a<<3)>>3]=+p[f+(c<<3)>>3];c=c+1|0;if((c|0)>=(g|0)){r=34;break}}if((r|0)==32)Oa(13577,13744,122,13812);else if((r|0)==34)return}function jj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;ja=u;u=u+128|0;X=ja+80|0;ia=ja+68|0;Y=ja+48|0;Z=ja+20|0;_=ja;$=b+4|0;ca=k[$>>2]|0;ha=b+8|0;S=k[ha>>2]|0;T=a+12|0;U=k[T>>2]|0;k[ia>>2]=0;V=ia+4|0;k[V>>2]=0;W=ia+8|0;k[W>>2]=0;mf(ia,ca,S);c=k[V>>2]|0;d=k[W>>2]|0;if((d|c|0)<=-1)Oa(11919,12068,74,12145);c=aa(d,c)|0;if((c|0)>0)iF(k[ia>>2]|0,0,c<<3|0)|0;M=a+8|0;c=k[M>>2]|0;a:do if((c|0)>=0){N=a+32|0;O=a+24|0;P=(S|0)>0;Q=a+28|0;R=a+16|0;v=a+20|0;w=(ca|0)>-1;x=Y+4|0;y=Y+8|0;z=Y+12|0;r=_+4|0;t=_+8|0;A=_+12|0;B=Z+4|0;q=X+4|0;s=X+8|0;C=X+12|0;D=X+20|0;E=X+32|0;F=Z+4|0;G=Z+8|0;H=Z+12|0;I=Z+16|0;J=Z+20|0;K=Z+24|0;L=X+28|0;o=0;b:while(1){d=k[N>>2]|0;l=k[d+(o<<2)>>2]|0;a=k[O>>2]|0;f=k[a+(l<<2)>>2]|0;e=l+1|0;n=o;o=o+1|0;g=(k[d+(o<<2)>>2]|0)-l|0;m=(k[a+(e<<2)>>2]|0)-f-g|0;if((g|0)==1){if(P?(ea=k[R>>2]|0,ba=k[ea+(e<<2)>>2]|0,fa=k[d+(k[(k[Q>>2]|0)+(l<<2)>>2]<<2)>>2]|0,da=k[a+(fa+1<<2)>>2]|0,ea=(k[ea+(l<<2)>>2]|0)+1|0,fa=(k[a+(fa<<2)>>2]|0)+1|0,ga=(l|0)>-1,(ea|0)<(ba|0)):0){a=(fa|0)<(da|0);d=0;do{c:do if(!ga){if(a){c=22;break b}}else{e=ea;f=fa;while(1){if((f|0)>=(da|0))break c;g=k[(k[v>>2]|0)+(f<<2)>>2]|0;h=k[$>>2]|0;if((h|0)<=(l|0)){c=22;break b}if((k[ha>>2]|0)<=(d|0)){c=22;break b}i=k[b>>2]|0;j=aa(h,d)|0;if(!((g|d|0)>-1&(h|0)>(g|0))){c=23;break b}m=i+(j+g<<3)|0;p[m>>3]=+p[m>>3]-+p[(k[T>>2]|0)+(e<<3)>>3]*+p[i+(j+l<<3)>>3];e=e+1|0;if((e|0)>=(ba|0))break;else f=f+1|0}}while(0);d=d+1|0}while((d|0)<(S|0))}}else{a=k[R>>2]|0;d=k[a+(l<<2)>>2]|0;a=(k[a+(e<<2)>>2]|0)-d|0;if((a|0)<=-1){c=25;break}c=U+(d<<3)|0;if(!((g|0)>-1|(c|0)==0)){c=27;break}if((l|0)<=-1){c=31;break}if((k[$>>2]|0)<=(l|0)){c=31;break}if((k[ha>>2]|0)<=0){c=31;break}if(!w){c=33;break}k[Y>>2]=(k[b>>2]|0)+(l<<3);k[x>>2]=g;k[y>>2]=S;if((g|S|0)<=-1){c=35;break}k[z>>2]=ca;k[_>>2]=c;k[r>>2]=g;k[t>>2]=g;k[A>>2]=a;k[Z>>2]=_;k[B>>2]=Y;kj(Y,Z,X);c=U+(d+g<<3)|0;if(!((m|g|0)>-1|(c|0)==0)){c=37;break}k[X>>2]=c;k[q>>2]=m;k[s>>2]=g;k[C>>2]=a;k[D>>2]=k[Y>>2];k[D+4>>2]=k[Y+4>>2];k[D+8>>2]=k[Y+8>>2];k[E>>2]=k[z>>2];if((g|0)!=(k[x>>2]|0)){c=39;break}c=k[W>>2]|0;l=k[ia>>2]|0;k[Z>>2]=l;k[F>>2]=m;k[G>>2]=c;if(!((c|m|0)>-1|(l|0)==0)){c=41;break}k[H>>2]=ia;k[I>>2]=0;k[J>>2]=0;d=k[V>>2]|0;k[K>>2]=d;if((m|0)<=-1){c=44;break}if(!((c|0)>-1&(d|0)>=(m|0))){c=44;break}if((c|0)!=(k[L>>2]|0)){c=46;break}mj(Z,X,D);do if(P){h=g+f|0;i=k[ia>>2]|0;if((m|0)<=0)break;g=k[v>>2]|0;a=0;do{e=0;f=h;while(1){j=k[g+(f<<2)>>2]|0;c=k[V>>2]|0;if(!((c|0)>(e|0)?(k[W>>2]|0)>(a|0):0)){c=60;break b}c=i+((aa(c,a)|0)+e<<3)|0;if((j|0)<=-1){c=61;break b}d=k[$>>2]|0;if((d|0)<=(j|0)){c=61;break b}if((k[ha>>2]|0)<=(a|0)){c=61;break b}l=(k[b>>2]|0)+((aa(d,a)|0)+j<<3)|0;p[l>>3]=+p[l>>3]-+p[c>>3];if((k[W>>2]|0)<=(a|0)){c=62;break b}p[c>>3]=0.0;e=e+1|0;if((e|0)>=(m|0))break;else f=f+1|0}a=a+1|0}while((a|0)<(S|0))}while(0);c=k[M>>2]|0}if((n|0)>=(c|0))break a}switch(c|0){case 22:{Oa(15640,15693,365,29764);break}case 23:{Oa(15640,15693,365,29764);break}case 25:{Oa(19264,19297,66,19366);break}case 27:{Oa(13818,13988,175,14058);break}case 31:{Oa(15640,15693,365,29764);break}case 33:{Oa(19264,19297,66,19366);break}case 35:{Oa(13818,13988,175,14058);break}case 37:{Oa(13818,13988,175,14058);break}case 39:{Oa(14710,14850,97,14920);break}case 41:{Oa(13818,13988,175,14058);break}case 44:{Oa(14177,13744,147,13812);break}case 46:{Oa(14445,14320,257,12780);break}case 60:{Oa(15640,15693,365,29764);break}case 61:{Oa(15640,15693,365,29764);break}case 62:{Oa(15640,15693,365,29764);break}}}while(0);c=k[ia>>2]|0;if(!c){u=ja;return}Pq(k[c+-4>>2]|0);u=ja;return}function kj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;b=k[b+4>>2]|0;l=k[b+8>>2]|0;h=k[a+4>>2]|0;if((h|0)!=(k[m+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(l|0)?(k[a+8>>2]|0)!=(l|0):0)Oa(14445,14320,257,12780);i=k[a>>2]|0;j=k[b>>2]|0;if((i|0)==(j|0)){c=k[b+12>>2]|0;if((k[a+12>>2]|0)!=(c|0))d=8}else{c=k[b+12>>2]|0;d=8}if((d|0)==8){if((h|0)!=(k[b+4>>2]|0))Oa(14445,14320,257,12780);if((l|0)!=(k[b+8>>2]|0))Oa(14445,14320,257,12780);e=k[a+12>>2]|0;if((h|0)>0&(l|0)>0){b=0;do{f=aa(b,e)|0;g=aa(b,c)|0;d=0;do{p[i+(d+f<<3)>>3]=+p[j+(d+g<<3)>>3];d=d+1|0}while((d|0)!=(h|0));b=b+1|0}while((b|0)!=(l|0))}}l=k[m+8>>2]|0;if((l|0)==(h|0)?(l|0)==(k[m+4>>2]|0):0){lj(m,a);return}else Oa(19710,19864,170,18516)}function lj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;Ji(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;Ii(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0.0;s=u;u=u+80|0;r=s;n=k[c+4>>2]|0;o=a+4|0;e=k[o>>2]|0;q=a+8|0;d=k[q>>2]|0;if(!((n|0)>0&(e+n+d|0)<20)){if((d|e|0)<=-1)Oa(11919,12068,74,12145);g=k[a>>2]|0;h=k[a+24>>2]|0;if((e|0)>0&(d|0)>0){f=e<<3;e=0;do{iF(g+((aa(e,h)|0)<<3)|0,0,f|0)|0;e=e+1|0}while((e|0)!=(d|0))}p[r>>3]=1.0;nj(a,b,c,r);u=s;return}g=k[b>>2]|0;i=k[b+4>>2]|0;j=k[b+12>>2]|0;m=c;l=k[m>>2]|0;m=k[m+4>>2]|0;h=k[c+8>>2]|0;f=k[c+12>>2]|0;if((k[b+8>>2]|0)!=(n|0))Oa(14710,14850,97,14920);k[r>>2]=g;k[r+4>>2]=i;k[r+8>>2]=n;k[r+12>>2]=j;b=r+20|0;k[b>>2]=l;k[b+4>>2]=m;k[r+28>>2]=h;k[r+32>>2]=f;k[r+40>>2]=g;k[r+48>>2]=j;k[r+52>>2]=l;k[r+60>>2]=f;k[r+64>>2]=n;if(!((e|0)==(i|0)&(d|0)==(h|0)))Oa(14445,14320,257,12780);i=k[a>>2]|0;h=k[a+24>>2]|0;if((d|0)>0){g=0;do{if((e|0)>0){f=aa(g,h)|0;d=0;do{t=+oj(r,d,g);p[i+(d+f<<3)>>3]=t;d=d+1|0;e=k[o>>2]|0}while((d|0)<(e|0));d=k[q>>2]|0}g=g+1|0}while((g|0)<(d|0))}u=s;return}function nj(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,j=0,l=0,m=0,n=0.0,o=0;m=u;u=u+32|0;l=m;i=k[a+4>>2]|0;j=b+4|0;if((i|0)!=(k[j>>2]|0))Oa(15296,15349,460,15440);e=k[a+8>>2]|0;f=c+8|0;if((e|0)!=(k[f>>2]|0))Oa(15296,15349,460,15440);g=b+8|0;h=k[g>>2]|0;if((e|0)==0|((i|0)==0|(h|0)==0)){u=m;return}n=+p[d>>3];o=l;k[o>>2]=0;k[o+4>>2]=0;o=l+8|0;k[o>>2]=i;d=l+12|0;k[d>>2]=e;i=l+16|0;k[i>>2]=h;_f(i,o,d,1);i=k[i>>2]|0;h=aa(i,k[o>>2]|0)|0;k[l+20>>2]=h;i=aa(k[d>>2]|0,i)|0;k[l+24>>2]=i;$f(k[j>>2]|0,k[f>>2]|0,k[g>>2]|0,k[b>>2]|0,k[b+12>>2]|0,k[c>>2]|0,k[c+12>>2]|0,k[a>>2]|0,k[a+24>>2]|0,n,l,0);a=k[l>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[l+4>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);u=m;return}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=(k[a>>2]|0)+(b<<3)|0;h=k[a+8>>2]|0;if(!((g|0)==0|(h|0)>-1))Oa(13818,13988,175,14058);f=k[a+12>>2]|0;if((b|0)<=-1)Oa(13577,13744,122,13812);if((k[a+4>>2]|0)<=(b|0))Oa(13577,13744,122,13812);e=(k[a+20>>2]|0)+((aa(k[a+32>>2]|0,c)|0)<<3)|0;b=k[a+24>>2]|0;if(!((b|0)>-1|(e|0)==0))Oa(13818,13988,175,14058);if((c|0)<=-1)Oa(13577,13744,122,13812);if((k[a+28>>2]|0)<=(c|0))Oa(13577,13744,122,13812);if((h|0)!=(b|0))Oa(14550,14607,110,14683);if(!h){d=0.0;return +d}if((h|0)<=0)Oa(13148,13216,413,13284);d=+p[g>>3]*+p[e>>3];if((h|0)==1)return +d;else b=1;do{c=g+((aa(b,f)|0)<<3)|0;d=d+ +p[c>>3]*+p[e+(b<<3)>>3];b=b+1|0}while((b|0)<(h|0));return +d}function pj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;b=k[b+4>>2]|0;l=k[b+8>>2]|0;h=k[a+4>>2]|0;if((h|0)!=(k[m+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(l|0)?(k[a+8>>2]|0)!=(l|0):0)Oa(14445,14320,257,12780);i=k[a>>2]|0;j=k[b>>2]|0;if((i|0)==(j|0)){c=k[b+12>>2]|0;if((k[a+12>>2]|0)!=(c|0))d=8}else{c=k[b+12>>2]|0;d=8}if((d|0)==8){if((h|0)!=(k[b+4>>2]|0))Oa(14445,14320,257,12780);if((l|0)!=(k[b+8>>2]|0))Oa(14445,14320,257,12780);e=k[a+12>>2]|0;if((h|0)>0&(l|0)>0){b=0;do{f=aa(b,e)|0;g=aa(b,c)|0;d=0;do{p[i+(d+f<<3)>>3]=+p[j+(d+g<<3)>>3];d=d+1|0}while((d|0)!=(h|0));b=b+1|0}while((b|0)!=(l|0))}}l=k[m+8>>2]|0;if((l|0)==(h|0)?(l|0)==(k[m+4>>2]|0):0){qj(m,a);return}else Oa(19710,19864,170,18516)}function qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;Ji(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;rj(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function rj(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;var h=0,j=0,l=0,m=0,n=0,o=0.0,q=0,r=0,s=0,t=0,v=0.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;$=u;u=u+16|0;Y=$+10|0;Z=$+9|0;_=$+8|0;W=$;X=k[g+16>>2]|0;V=k[g+8>>2]|0;V=(V|0)<(a|0)?V:a;h=aa(V,X)|0;m=aa(X,b)|0;if(h>>>0>536870911){$=Kb(4)|0;cF($);Cc($|0,2032,79)}j=k[g>>2]|0;l=h<<3;if(!j)do if(l>>>0>=131073){h=Oq(l+16|0)|0;j=h+16&-16;if(!h){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[j+-4>>2]=h;if(!j){$=Kb(4)|0;cF($);Cc($|0,2032,79)}else{h=k[g>>2]|0;break}}else{j=u;u=u+((1*(l+15|0)|0)+15&-16)|0;j=j+15&-16;h=0}while(0);else h=j;U=(h|0)==0?j:0;T=l>>>0>131072;if(m>>>0>536870911){$=Kb(4)|0;cF($);Cc($|0,2032,79)}g=g+4|0;l=k[g>>2]|0;m=m<<3;if(!l)do if(m>>>0>=131073){h=Oq(m+16|0)|0;l=h+16&-16;if(!h){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[l+-4>>2]=h;if(!l){$=Kb(4)|0;cF($);Cc($|0,2032,79)}else{h=k[g>>2]|0;break}}else{l=u;u=u+((1*(m+15|0)|0)+15&-16)|0;l=l+15&-16;h=0}while(0);else h=l;S=(h|0)==0?l:0;Q=m>>>0>131072;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}R=(b|0)>0;if(R)h=((((k[7995]|0)>>>0)/(((f|0)<(a|0)?a:f)<<5>>>0)|0|0)/4|0)<<2;else h=0;K=(h|0)>4?h:4;a:do if((a|0)>0){L=W+4|0;M=W+4|0;N=W+4|0;O=W+4|0;P=W+4|0;I=a;do{J=(I|0)>(X|0)?X:I;if(R){G=(J|0)>0;H=I-J|0;x=0;do{B=b-x|0;B=(K|0)<(B|0)?K:B;if(G){C=B+x|0;D=l+((aa(x,J)|0)<<3)|0;E=aa(x,f)|0;F=e+(E+H<<3)|0;z=(B|0)<1;y=0;do{s=J-y|0;A=(s|0)<4?s:4;w=I-y|0;if(!((s|0)<1|z)){r=0;do{t=w-r+-1|0;q=A-r|0;m=q+-1|0;a=t-m|0;n=aa(t,d)|0;v=1.0/+p[c+(n+t<<3)>>3];n=c+(n+a<<3)|0;if((q|0)>1){g=x;do{q=aa(g,f)|0;h=e+(q+t<<3)|0;o=v*+p[h>>3];p[h>>3]=o;q=e+(q+a<<3)|0;h=0;do{ba=q+(h<<3)|0;p[ba>>3]=+p[ba>>3]-o*+p[n+(h<<3)>>3];h=h+1|0}while((h|0)<(m|0));g=g+1|0}while((g|0)<(C|0))}else{h=x;do{ba=e+((aa(h,f)|0)+t<<3)|0;p[ba>>3]=v*+p[ba>>3];h=h+1|0}while((h|0)<(C|0))}r=r+1|0}while((A|0)>(r|0))}g=s-A|0;h=w-A|0;k[W>>2]=e+(h+E<<3);k[N>>2]=f;Ki(_,D,W,A,B,J,g);if((g|0)>0){ba=c+((aa(h,d)|0)+H<<3)|0;k[W>>2]=ba;k[O>>2]=d;ag(Z,j,W,A,g,0,0);k[W>>2]=F;k[P>>2]=f;cg(Y,W,j,D,g,A,B,-1.0,A,J,0,g)}y=y+4|0}while((J|0)>(y|0))}x=x+K|0}while((x|0)<(b|0))}I=I-X|0;m=(I|0)>0;if(!m)break a;a=aa(I,d)|0;h=0;do{g=I-h|0;g=(g|0)<(V|0)?g:V;if((g|0)>0){k[W>>2]=c+(h+a<<3);k[L>>2]=d;ag(Z,j,W,J,g,0,0);k[W>>2]=e+(h<<3);k[M>>2]=f;cg(Y,W,j,l,g,J,b,-1.0,-1,-1,0,0)}h=h+V|0}while((I|0)>(h|0))}while(m)}while(0);if(!((S|0)==0|Q^1))Pq(k[S+-4>>2]|0);if((U|0)==0|T^1){u=$;return}Pq(k[U+-4>>2]|0);u=$;return}function sj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0.0;f=k[c>>2]|0;g=k[c+4>>2]|0;h=k[a>>2]|0;if((h|0)==(f|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0){o=b+4|0;q=k[o>>2]|0;if((q|0)<=-1)Oa(13359,12702,312,12780);if(!q)return;c=Oq(q+16|0)|0;r=c+16&-16;if(!c){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}k[r+-4>>2]=c;if(!r){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}m=r;iF(m|0,0,q|0)|0;d=k[o>>2]|0;a:do if((d|0)>0){n=k[a>>2]|0;l=a+4|0;c=0;b:while(1){c:do if((c|0)<(d|0)){a=(c|0)>-1;while(1){if(!(a&(q|0)>(c|0))){s=17;break b}if(!(i[m+c>>0]|0)){j=c;break c}c=c+1|0;if((c|0)>=(d|0)){j=c;break}}}else j=c;while(0);if((j|0)>=(d|0)){s=27;break a}c=j+1|0;i[m+j>>0]=1;h=k[b>>2]|0;d=k[h+(j<<2)>>2]|0;if((d|0)!=(j|0)){f=j;g=d;while(1){d=n+(g<<3)|0;a=k[l>>2]|0;if(!((g|0)>-1&(a|0)>(g|0))){s=23;break b}e=n+(f<<3)|0;if(!((f|0)>-1&(a|0)>(f|0))){s=25;break b}t=+p[d>>3];p[d>>3]=+p[e>>3];p[e>>3]=t;i[m+g>>0]=1;d=k[h+(g<<2)>>2]|0;if((d|0)==(j|0))break;else{f=g;g=d}}}d=k[o>>2]|0;if((c|0)>=(d|0))break a}if((s|0)==17)Oa(16605,15693,408,29907);else if((s|0)==23)Oa(13577,13744,122,13812);else if((s|0)==25)Oa(13577,13744,122,13812)}else s=27;while(0);if((s|0)==27?(r|0)==0:0)return;Pq(k[m+-4>>2]|0);return}if((g|0)<=0)return;e=k[b>>2]|0;d=k[a+4>>2]|0;c=0;while(1){a=k[e+(c<<2)>>2]|0;if(!((a|0)>-1&(g|0)>(a|0))){s=30;break}if((d|0)<=(c|0)){s=32;break}p[h+(c<<3)>>3]=+p[f+(a<<3)>>3];c=c+1|0;if((c|0)>=(g|0)){s=34;break}}if((s|0)==30)Oa(13577,13744,122,13812);else if((s|0)==32)Oa(13577,13744,122,13812);else if((s|0)==34)return}function tj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=sf(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function uj(a){a=a|0;return 176}function vj(a){a=a|0;if(!a)return;sg(a+8|0);EA(a);return}function wj(a){a=a|0;var b=0;b=CA(216)|0;k[b>>2]=a;Cg(b+8|0);i[b+208>>0]=0;i[b+209>>0]=0;return b|0}function xj(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function yj(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+208|0;if(!(i[b>>0]|0)){i[b>>0]=0;c=a+209|0;i[c>>0]=0;e=(k[a>>2]|0)+664|0;Bh(e);d=a+8|0;zj(d,e);i[b>>0]=1;Aj(d,e);if(!(i[d>>0]|0))Oa(17611,20281,257,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}b=a+209|0;if(i[b>>0]|0)return;d=(k[a>>2]|0)+664|0;Bh(d);e=a+8|0;Aj(e,d);if(!(i[e>>0]|0))Oa(17611,20281,257,17666);if(k[a+12>>2]|0)return;i[b>>0]=1;return}function zj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+32|0;j=p+8|0;e=p;n=b+16|0;if(k[n>>2]|0)Oa(20150,20281,309,17410);g=a+136|0;ci(p+16|0,b,g);l=k[b+4>>2]|0;m=k[b+8>>2]|0;o=(l|0)<(m|0)?l:m;d=a+140|0;c=k[d>>2]|0;if(!c){Ef(g,l);k[j>>2]=0;k[e>>2]=l+-1;Bj(g,l,j,e)|0;c=k[d>>2]|0}k[j>>2]=0;f=j+4|0;k[f>>2]=0;Ef(j,c);e=k[f>>2]|0;h=k[j>>2]|0;if((e|0)>0){d=k[g>>2]|0;c=0;do{k[h+(k[d+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0));e=k[f>>2]|0}f=a+152|0;c=a+156|0;if((k[c>>2]|0)!=(e|0)?(Ng(f,e,1),(k[c>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);c=k[f>>2]|0;if((e|0)>0){d=0;do{k[c+(d<<2)>>2]=k[h+(d<<2)>>2];d=d+1|0}while((d|0)!=(e|0))}d=k[j>>2]|0;if(d){Pq(k[d+-4>>2]|0);c=k[f>>2]|0}di(b,a+176|0,a+184|0,c)|0;i[a+193>>0]=1;g=a+56|0;Dg(g,m,l);h=a+92|0;Dg(h,m,o);e=k[n>>2]|0;if(e){f=k[b+4>>2]|0;if(f){if((f|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((f|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(f|0))}}else c=0}else{c=k[b+12>>2]|0;c=(k[c+(k[b+4>>2]<<2)>>2]|0)-(k[c>>2]|0)|0}Gg(g,c<<1);f=k[n>>2]|0;if(!f){n=k[b+12>>2]|0;b=(k[n+(k[b+4>>2]<<2)>>2]|0)-(k[n>>2]|0)|0;b=b<<1;Gg(h,b);b=a+128|0;Df(b,o);a=a+1|0;i[a>>0]=1;u=p;return}e=k[b+4>>2]|0;if(!e){b=0;b=b<<1;Gg(h,b);b=a+128|0;Df(b,o);a=a+1|0;i[a>>0]=1;u=p;return}if((e|0)<=-1)Oa(14697,13988,163,14058);c=k[f>>2]|0;if((e|0)==1){b=c;b=b<<1;Gg(h,b);b=a+128|0;Df(b,o);a=a+1|0;i[a>>0]=1;u=p;return}else d=1;do{c=(k[f+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(e|0));b=c<<1;Gg(h,b);b=a+128|0;Df(b,o);a=a+1|0;i[a>>0]=1;u=p;return}function Aj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,j=0.0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,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;Fa=u;u=u+80|0;Ea=Fa+72|0;Da=Fa+64|0;Ca=Fa+56|0;Ba=Fa+48|0;Aa=Fa+12|0;za=Fa;if(!(i[a+1>>0]|0))Oa(20356,20281,352,17671);ma=k[b+8>>2]|0;ya=k[b+4>>2]|0;oa=(ya|0)<(ma|0)?ya:ma;k[Ea>>2]=0;na=Ea+4|0;k[na>>2]=0;Ef(Ea,(ma|0)<(ya|0)?ya:ma);c=k[na>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[Ea>>2]|0,-1,c<<2|0)|0;k[Da>>2]=0;ia=Da+4|0;k[ia>>2]=0;Ef(Da,ya);k[Ca>>2]=0;ja=Ca+4|0;k[ja>>2]=0;Ef(Ca,ma);k[Ba>>2]=0;ka=Ba+4|0;k[ka>>2]=0;Df(Ba,ma);h=+p[a+160>>3];wa=a+56|0;ua=a+84|0;k[ua>>2]=0;va=a+68|0;xa=a+60|0;iF(k[va>>2]|0,0,(k[xa>>2]<<2)+4|0)|0;c=k[a+72>>2]|0;if(c|0)iF(c|0,0,k[xa>>2]<<2|0)|0;sa=a+92|0;qa=a+120|0;k[qa>>2]=0;ra=a+104|0;ta=a+96|0;iF(k[ra>>2]|0,0,(k[ta>>2]<<2)+4|0)|0;ha=a+108|0;c=k[ha>>2]|0;if(c|0)iF(c|0,0,k[ta>>2]<<2|0)|0;fa=a+20|0;Ag(fa,b)|0;ga=a+193|0;if(!(i[ga>>0]|0)){e=k[a+140>>2]|0;k[Aa>>2]=0;d=Aa+4|0;k[d>>2]=0;Ef(Aa,e);e=k[d>>2]|0;g=k[Aa>>2]|0;if((e|0)>0){f=k[a+136>>2]|0;c=0;do{k[g+(k[f+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0));e=k[d>>2]|0}f=a+152|0;c=a+156|0;if((k[c>>2]|0)!=(e|0)?(Ng(f,e,1),(k[c>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);c=k[f>>2]|0;if((e|0)>0){d=0;do{k[c+(d<<2)>>2]=k[g+(d<<2)>>2];d=d+1|0}while((d|0)!=(e|0))}d=k[Aa>>2]|0;if(d){Pq(k[d+-4>>2]|0);c=k[f>>2]|0}di(fa,a+176|0,a+184|0,c)|0;i[ga>>0]=1}d=a+36|0;c=k[d>>2]|0;if(!c){f=k[a+24>>2]|0;c=Oq(f<<2)|0;k[d>>2]=c;if((f|0)>0){e=k[a+32>>2]|0;d=0;do{ea=d;d=d+1|0;k[c+(ea<<2)>>2]=(k[e+(d<<2)>>2]|0)-(k[e+(ea<<2)>>2]|0)}while((d|0)<(f|0))}}f=k[b+12>>2]|0;r=(ya|0)>0;a:do if(r){g=a+140|0;b=a+32|0;l=a+136|0;e=0;while(1){d=k[g>>2]|0;if(!d)d=e;else{if((d|0)<=(e|0))break;d=k[(k[l>>2]|0)+(e<<2)>>2]|0}ea=f+(e<<2)|0;k[(k[b>>2]|0)+(d<<2)>>2]=k[ea>>2];e=e+1|0;k[c+(d<<2)>>2]=(k[f+(e<<2)>>2]|0)-(k[ea>>2]|0);if((e|0)>=(ya|0))break a}Oa(16605,15693,425,29764)}while(0);if(i[a+168>>0]|0){b:do if(r){l=a+28|0;m=a+40|0;n=a+32|0;o=k[fa+4>>2]|0;q=(c|0)==0;b=0;h=0.0;while(1){if((o|0)<=(b|0)){pa=40;break}if((k[l>>2]|0)<=0){pa=42;break}g=k[m>>2]|0;d=(k[n>>2]|0)+(b<<2)|0;if(!d){pa=44;break}e=k[d>>2]|0;if(!q?(v=c+(b<<2)|0,(v|0)!=0):0)f=(k[v>>2]|0)+e|0;else f=k[d+4>>2]|0;if((e|0)<(f|0)){j=0.0;d=e;do{t=+p[g+(d<<3)>>3];j=j+t*t;d=d+1|0}while((d|0)!=(f|0))}else j=0.0;t=+Q(+j);h=h=(ya|0)){s=h;break b}}if((pa|0)==40)Oa(13577,13744,122,13812);else if((pa|0)==42)Oa(16822,16887,19,11478);else if((pa|0)==44)while(1)pa=44}else s=0.0;while(0);h=+((ya+ma|0)*20|0)*(s==0.0?1.0:s)*2.220446049250313e-16}ea=a+144|0;Ef(ea,ya);da=a+148|0;d=k[da>>2]|0;if((d|0)>0){e=k[ea>>2]|0;c=0;do{k[e+(c<<2)>>2]=c;c=c+1|0}while((c|0)!=(d|0))}c=k[ra>>2]|0;d=k[c>>2]|0;if((d|0)!=(k[qa>>2]|0))Oa(16047,15958,414,16152);c=c+4|0;if(k[c>>2]|0)Oa(16161,15958,415,16152);k[c>>2]=d;c:do if(r){L=fa+20|0;M=fa+24|0;N=fa+12|0;O=fa+16|0;R=ya+-1|0;S=a+176|0;T=a+184|0;U=a+76|0;V=a+80|0;W=sa+4|0;X=a+100|0;Y=a+112|0;Z=a+116|0;c=a+132|0;d=a+128|0;_=a+180|0;$=a+176|0;aa=a+188|0;ba=a+184|0;ca=a+112|0;e=0;b=0;d:while(1){H=(b|0)>=(ma|0);G=H^1;I=(oa|0)>(b|0);J=(b|0)<(R|0);while(1){f=k[na>>2]|0;if((f|0)<=-1){pa=64;break d}if(f|0)iF(k[Ea>>2]|0,-1,f<<2|0)|0;f=k[va>>2]|0;g=k[f+(e<<2)>>2]|0;if((g|0)!=(k[ua>>2]|0)){pa=68;break d}K=e+1|0;f=f+(K<<2)|0;if(k[f>>2]|0){pa=70;break d}k[f>>2]=g;if((k[na>>2]|0)<=(b|0)){pa=72;break d}k[(k[Ea>>2]|0)+(b<<2)>>2]=e;if((k[ja>>2]|0)<=0){pa=74;break d}k[k[Ca>>2]>>2]=b;f=k[ka>>2]|0;if((f|0)<=-1){pa=76;break d}if(f|0)iF(k[Ba>>2]|0,0,f<<3|0)|0;E=k[L>>2]|0;F=k[M>>2]|0;f=k[N>>2]|0;l=k[f+(e<<2)>>2]|0;g=k[O>>2]|0;if(!g)z=k[f+(K<<2)>>2]|0;else z=(k[g+(e<<2)>>2]|0)+l|0;g=(l|0)<(z|0);do if(g|G){A=k[Ea>>2]|0;B=k[Da>>2]|0;C=k[Ba>>2]|0;D=k[Ca>>2]|0;w=0;f=1;y=H;while(1){if(g)v=k[F+(l<<2)>>2]|0;else v=b;y=y|(v|0)==(b|0);if((v|0)<=-1){pa=88;break d}if((k[aa>>2]|0)<=(v|0)){pa=88;break d}m=k[(k[ba>>2]|0)+(v<<2)>>2]|0;if((m|0)<0){pa=92;break d}if((k[na>>2]|0)<=(m|0)){pa=93;break d}o=(w|0)>-1;x=w;while(1){n=A+(m<<2)|0;if((k[n>>2]|0)==(e|0))break;if(!(o&(k[ia>>2]|0)>(x|0))){pa=96;break d}k[B+(x<<2)>>2]=m;if((k[na>>2]|0)<=(m|0)){pa=98;break d}k[n>>2]=e;if((k[_>>2]|0)<=(m|0)){pa=100;break d}m=k[(k[$>>2]|0)+(m<<2)>>2]|0;if(!((m|0)>-1?(k[na>>2]|0)>(m|0):0)){pa=93;break d}else x=x+1|0}r=x-w|0;q=(r|0)/2|0;if((r|0)>1){o=0;do{m=o+w|0;if((m|0)<=-1){pa=106;break d}r=k[ia>>2]|0;if((r|0)<=(m|0)){pa=106;break d}m=B+(m<<2)|0;n=x-o|0;if(!((n|0)>0&(r|0)>=(n|0))){pa=108;break d}r=B+(n+-1<<2)|0;n=k[m>>2]|0;k[m>>2]=k[r>>2];k[r>>2]=n;o=o+1|0}while((o|0)<(q|0))}if(g)if((k[ka>>2]|0)>(v|0))j=+p[E+(l<<3)>>3];else{pa=111;break d}else if((k[ka>>2]|0)>(v|0))j=0.0;else{pa=113;break d}p[C+(v<<3)>>3]=j;do if((v|0)>(b|0)){if((k[na>>2]|0)<=(v|0)){pa=116;break d}g=A+(v<<2)|0;if((k[g>>2]|0)==(e|0))break;if(!((f|0)>-1?(k[ja>>2]|0)>(f|0):0)){pa=119;break d}k[D+(f<<2)>>2]=v;if((k[na>>2]|0)<=(v|0)){pa=121;break d}k[g>>2]=e;f=f+1|0}while(0);l=l+1|0;g=(l|0)<(z|0);if(!(g|y^1))break;else w=x}r=x+-1|0;v=(x|0)>0;if(!v){w=f;v=0;break}C=k[Da>>2]|0;D=k[Ba>>2]|0;E=k[Ea>>2]|0;F=k[Ca>>2]|0;B=r;while(1){g=k[ia>>2]|0;if((g|0)<=(B|0)){pa=128;break d}w=k[C+(B<<2)>>2]|0;if((w|0)<=-1){pa=131;break d}if((k[W>>2]|0)<=(w|0)){pa=131;break d}o=k[X>>2]|0;if((o|0)!=(k[ka>>2]|0)){pa=133;break d}if((o|0)<=0){pa=135;break d}q=k[Y>>2]|0;A=k[Z>>2]|0;x=k[ra>>2]|0;l=x+(w<<2)|0;if(!l){pa=137;break d}m=k[l>>2]|0;y=k[ha>>2]|0;z=(y|0)==0;do if(z)pa=140;else{n=y+(w<<2)|0;if(!n){pa=140;break}l=(k[n>>2]|0)+m|0}while(0);if((pa|0)==140){pa=0;l=k[l+4>>2]|0}if((m|0)<(l|0)){j=0.0;n=m;do{j=j+ +p[q+(n<<3)>>3]*+p[D+(k[A+(n<<2)>>2]<<3)>>3];n=n+1|0}while((n|0)!=(l|0))}else j=0.0;if((k[c>>2]|0)<=(w|0)){pa=145;break d}j=j*+p[(k[d>>2]|0)+(w<<3)>>3];if(z)n=k[x+(w+1<<2)>>2]|0;else n=(k[y+(w<<2)>>2]|0)+m|0;if((m|0)<(n|0)){g=m;do{l=k[A+(g<<2)>>2]|0;if(!((l|0)>-1&(o|0)>(l|0))){pa=154;break d}l=D+(l<<3)|0;p[l>>3]=+p[l>>3]-j*+p[q+(g<<3)>>3];g=g+1|0}while((g|0)<(n|0));g=k[ia>>2]|0}if((g|0)<=(B|0)){pa=152;break d}if((k[_>>2]|0)<=(w|0)){pa=157;break d}do if((k[(k[$>>2]|0)+(w<<2)>>2]|0)==(b|0)){if(z)n=k[x+(w+1<<2)>>2]|0;else n=(k[y+(w<<2)>>2]|0)+m|0;if((m|0)>=(n|0))break;do{g=k[A+(m<<2)>>2]|0;if(!((g|0)>-1?(k[na>>2]|0)>(g|0):0)){pa=164;break d}l=E+(g<<2)|0;if((k[l>>2]|0)!=(e|0)){if(!((f|0)>-1?(k[ja>>2]|0)>(f|0):0)){pa=167;break d}k[F+(f<<2)>>2]=g;if((k[na>>2]|0)<=(g|0)){pa=169;break d}k[l>>2]=e;f=f+1|0}m=m+1|0}while((m|0)<(n|0))}while(0);if((B|0)>0)B=B+-1|0;else{w=f;break}}}else{w=1;v=0;r=-1}while(0);e:do if(I){do if(!w)j=0.0;else{if((k[ja>>2]|0)<=0){pa=175;break d}f=k[k[Ca>>2]>>2]|0;if(!((f|0)>-1?(k[ka>>2]|0)>(f|0):0)){pa=177;break d}t=+p[(k[Ba>>2]|0)+(f<<3)>>3];q=(w|0)>1;if(!q){j=t;break}g=k[ja>>2]|0;l=k[Ca>>2]|0;m=k[ka>>2]|0;n=k[Ba>>2]|0;f=1;j=0.0;do{if((g|0)<=(f|0)){pa=182;break d}o=k[l+(f<<2)>>2]|0;if(!((o|0)>-1&(m|0)>(o|0))){pa=184;break d}s=+p[n+(o<<3)>>3];j=j+s*s;f=f+1|0}while((f|0)<(w|0));if(j==0.0){j=t;break}j=+Q(+(t*t+j));j=!(t>=0.0)?j:-j;if((k[ja>>2]|0)<=0){pa=192;break d}f=k[k[Ca>>2]>>2]|0;if(!((f|0)>-1?(k[ka>>2]|0)>(f|0):0)){pa=194;break d}p[(k[Ba>>2]|0)+(f<<3)>>3]=1.0;if(q){s=t-j;g=k[Ca>>2]|0;l=k[Ba>>2]|0;f=1;do{if((k[ja>>2]|0)<=(f|0)){pa=198;break d}m=k[g+(f<<2)>>2]|0;if(!((m|0)>-1?(k[ka>>2]|0)>(m|0):0)){pa=200;break d}F=l+(m<<3)|0;p[F>>3]=+p[F>>3]/s;f=f+1|0}while((f|0)<(w|0))}s=(j-t)/j;break e}while(0);if((k[ja>>2]|0)<=0){pa=187;break d}f=k[k[Ca>>2]>>2]|0;if(!((f|0)>-1?(k[ka>>2]|0)>(f|0):0)){pa=189;break d}p[(k[Ba>>2]|0)+(f<<3)>>3]=1.0;s=0.0}else{s=0.0;j=0.0}while(0);if(v){f=r;while(1){if((k[ia>>2]|0)<=(f|0)){pa=208;break d}g=k[(k[Da>>2]|0)+(f<<2)>>2]|0;if((g|0)<(b|0)){if(!((g|0)>-1?(k[ka>>2]|0)>(g|0):0)){pa=211;break d}t=+p[(k[Ba>>2]|0)+(g<<3)>>3];D=(k[va>>2]|0)+(K<<2)|0;F=k[D>>2]|0;k[D>>2]=F+1;D=k[ua>>2]|0;Eg(U,D+1|0,1.0);E=k[U>>2]|0;p[E+(D<<3)>>3]=0.0;k[(k[V>>2]|0)+(D<<2)>>2]=g;p[E+(F<<3)>>3]=t;if((k[ka>>2]|0)<=(g|0)){pa=213;break d}p[(k[Ba>>2]|0)+(g<<3)>>3]=0.0}if((f|0)>0)f=f+-1|0;else break}}if(I?+P(+j)>=h:0)break;if(J){f=b;do{g=k[da>>2]|0;if((g|0)<=(f|0)){pa=241;break d}e=k[ea>>2]|0;l=e+(f<<2)|0;f=f+1|0;if((g|0)<=(f|0)){pa=243;break d}F=e+(f<<2)|0;E=k[l>>2]|0;k[l>>2]=k[F>>2];k[F>>2]=E}while((f|0)<(R|0))}else e=k[ea>>2]|0;di(fa,S,T,e)|0;i[ga>>0]=0;if((K|0)<(ya|0))e=K;else{pa=245;break c}}f=k[va>>2]|0;g=f+(K<<2)|0;l=k[g>>2]|0;if((l|0)!=(k[ua>>2]|0)){pa=218;break}if((l|0)!=(k[f+(e<<2)>>2]|0)?(k[(k[V>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){pa=221;break}k[g>>2]=l+1;I=k[ua>>2]|0;Eg(U,I+1|0,1.0);J=k[U>>2]|0;p[J+(I<<3)>>3]=0.0;k[(k[V>>2]|0)+(I<<2)>>2]=b;p[J+(l<<3)>>3]=j;if((k[c>>2]|0)<=(b|0)){pa=223;break}p[(k[d>>2]|0)+(b<<3)>>3]=s;g=b+1|0;if((w|0)>0){e=0;do{if((k[ja>>2]|0)<=(e|0)){pa=228;break d}f=k[(k[Ca>>2]|0)+(e<<2)>>2]|0;if(!((f|0)>-1?(k[ka>>2]|0)>(f|0):0)){pa=230;break d}t=+p[(k[Ba>>2]|0)+(f<<3)>>3];H=(k[ra>>2]|0)+(g<<2)|0;J=k[H>>2]|0;k[H>>2]=J+1;H=k[qa>>2]|0;Eg(ca,H+1|0,1.0);I=k[ca>>2]|0;p[I+(H<<3)>>3]=0.0;k[(k[Z>>2]|0)+(H<<2)>>2]=f;p[I+(J<<3)>>3]=t;if((k[ka>>2]|0)<=(f|0)){pa=232;break d}p[(k[Ba>>2]|0)+(f<<3)>>3]=0.0;e=e+1|0}while((e|0)<(w|0))}if((g|0)<(oa|0)){e=k[ra>>2]|0;f=k[e+(g<<2)>>2]|0;if((f|0)!=(k[qa>>2]|0)){pa=235;break}e=e+(b+2<<2)|0;if(k[e>>2]|0){pa=237;break}k[e>>2]=f}if((K|0)<(ya|0)){e=K;b=g}else{b=g;pa=245;break c}}switch(pa|0){case 64:{Oa(11919,12068,74,12145);break}case 68:{Oa(16047,15958,414,16152);break}case 70:{Oa(16161,15958,415,16152);break}case 72:{Oa(16605,15693,425,29764);break}case 74:{Oa(16605,15693,425,29764);break}case 76:{Oa(11919,12068,74,12145);break}case 88:{Oa(16605,15693,425,29764);break}case 92:{TA(a+8|0,20427)|0;la=3;break c}case 93:{Oa(16605,15693,425,29764);break}case 96:{Oa(16605,15693,425,29764);break}case 98:{Oa(16605,15693,425,29764);break}case 100:{Oa(16605,15693,425,29764);break}case 106:{Oa(16605,15693,425,29764);break}case 108:{Oa(16605,15693,425,29764);break}case 111:{Oa(16605,15693,425,29764);break}case 113:{Oa(16605,15693,425,29764);break}case 116:{Oa(16605,15693,425,29764);break}case 119:{Oa(16605,15693,425,29764);break}case 121:{Oa(16605,15693,425,29764);break}case 128:{Oa(16605,15693,425,29764);break}case 131:{Oa(13577,13744,122,13812);break}case 133:{Oa(20474,20497,26,20575);break}case 135:{Oa(20579,20497,27,20575);break}case 137:while(1)pa=137;case 145:{Oa(16605,15693,425,29764);break}case 152:{Oa(16605,15693,425,29764);break}case 154:{Oa(16605,15693,425,29764);break}case 157:{Oa(16605,15693,425,29764);break}case 164:{Oa(16605,15693,425,29764);break}case 167:{Oa(16605,15693,425,29764);break}case 169:{Oa(16605,15693,425,29764);break}case 175:{Oa(16605,15693,425,29764);break}case 177:{Oa(16605,15693,425,29764);break}case 182:{Oa(16605,15693,425,29764);break}case 184:{Oa(16605,15693,425,29764);break}case 187:{Oa(16605,15693,425,29764);break}case 189:{Oa(16605,15693,425,29764);break}case 192:{Oa(16605,15693,425,29764);break}case 194:{Oa(16605,15693,425,29764);break}case 198:{Oa(16605,15693,425,29764);break}case 200:{Oa(16605,15693,425,29764);break}case 208:{Oa(16605,15693,425,29764);break}case 211:{Oa(16605,15693,425,29764);break}case 213:{Oa(16605,15693,425,29764);break}case 218:{Oa(16249,15958,392,16348);break}case 221:{Oa(16371,15958,393,16348);break}case 223:{Oa(16605,15693,425,29764);break}case 228:{Oa(16605,15693,425,29764);break}case 230:{Oa(16605,15693,425,29764);break}case 232:{Oa(16605,15693,425,29764);break}case 235:{Oa(16047,15958,414,16152);break}case 237:{Oa(16161,15958,415,16152);break}case 241:{Oa(16605,15693,425,29764);break}case 243:{Oa(16605,15693,408,29907);break}}}else{b=0;d=a+128|0;c=a+132|0;pa=245}while(0);if((pa|0)==245){f=oa-b|0;e=(k[c>>2]|0)-f|0;c=(k[d>>2]|0)+(e<<3)|0;d=(f|0)>-1;if(!(d|(c|0)==0))Oa(13818,13988,175,14058);if((e|f|0)<0)Oa(14177,13744,147,13812);if(!d)Oa(11919,12068,74,12145);if(f|0)iF(c|0,0,f<<3|0)|0;do if(!(k[sa+16>>2]|0)){g=k[qa>>2]|0;e=k[ta>>2]|0;if((e|0)<=-1)break;f=k[ra>>2]|0;c=e;while(1){if(k[f+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0))break;do{c=c+1|0;k[f+(c<<2)>>2]=g}while((c|0)<(k[ta>>2]|0))}while(0);Bh(sa);do if(!(k[wa+16>>2]|0)){g=k[ua>>2]|0;e=k[xa>>2]|0;if((e|0)<=-1)break;f=k[va>>2]|0;c=e;while(1){if(k[f+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0))break;do{c=c+1|0;k[f+(c<<2)>>2]=g}while((c|0)<(k[xa>>2]|0))}while(0);Bh(wa);i[a+192>>0]=0;k[a+172>>2]=b;if((b|0)<(ya|0)){i[Aa>>0]=0;ya=Aa+4|0;k[ya>>2]=0;k[ya+4>>2]=0;k[ya+8>>2]=0;k[ya+12>>2]=0;k[ya+16>>2]=0;k[ya+20>>2]=0;k[ya+24>>2]=0;k[ya+28>>2]=0;Ag(Aa,wa)|0;i[za>>0]=0;k[za+4>>2]=Aa;k[za+8>>2]=ea;if((k[Aa+4>>2]|0)!=(k[da>>2]|0))Oa(14710,14850,97,14920);Cj(wa,za)|0;d=a+152|0;ji(za,0,d,ea);e=k[za>>2]|0;f=k[za+4>>2]|0;c=a+156|0;do if((k[c>>2]|0)!=(f|0)){Ng(d,f,1);if((k[c>>2]|0)==(f|0))break;Oa(12160,12207,721,12285)}while(0);d=k[d>>2]|0;if((f|0)>0){c=0;do{k[d+(c<<2)>>2]=k[e+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[za>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);Pq(k[Aa+12>>2]|0);Pq(k[Aa+16>>2]|0);c=k[Aa+20>>2]|0;if(c|0)FA(c);c=k[Aa+24>>2]|0;if(c|0)FA(c)}i[a>>0]=1;i[a+2>>0]=1;la=0}k[a+4>>2]=la;c=k[Ba>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[Ca>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[Da>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[Ea>>2]|0;if(!c){u=Fa;return}Pq(k[c+-4>>2]|0);u=Fa;return}function Bj(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;i=k[d>>2]|0;h=(b|0)==1?i:k[c>>2]|0;d=i-h|0;e=(d|0)/(((b|0)<2?1:b+-1|0)|0)|0;f=(d|0)>-1?d:0-d|0;c=f+1|0;f=(((i|0)>=(h|0)?b:0-b|0)+d|0)/(((f|0)==-1?1:c)|0)|0;if((b|0)<=1)if((b|0)>-1)g=0;else Oa(11919,12068,74,12145);else g=(c|0)<(b|0)&1;c=a+4|0;if((k[c>>2]|0)!=(b|0)?(Ng(a,b,1),(k[c>>2]|0)!=(b|0)):0)Oa(12160,12207,721,12285);d=k[a>>2]|0;if((b|0)<=0)return a|0;if(!(g<<24>>24)){c=0;do{i=(aa(c,e)|0)+h|0;k[d+(c<<2)>>2]=i;c=c+1|0}while((c|0)!=(b|0));return a|0}else{c=0;do{k[d+(c<<2)>>2]=((c|0)/(f|0)|0)+h;c=c+1|0}while((c|0)!=(b|0));return a|0}return 0}function Cj(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(Dg(a,k[(k[b+4>>2]|0)+8>>2]|0,k[(k[b+8>>2]|0)+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}Dj(a,b);return a|0}function Dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+96|0;B=C;z=C+56|0;Ej(B,b);g=b+8|0;A=k[(k[g>>2]|0)+4>>2]|0;if(!(i[b>>0]|0)){e=b+4|0;s=k[(k[e>>2]|0)+8>>2]|0;i[z>>0]=0;w=z+4|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[w+16>>2]=0;k[w+20>>2]=0;k[w+24>>2]=0;k[w+28>>2]=0;k[z+8>>2]=s;s=z+28|0;k[s>>2]=0;c=Oq((A<<2)+4|0)|0;k[z+12>>2]=c;if(!c){C=Kb(4)|0;cF(C);Cc(C|0,2032,79)}k[w>>2]=A;v=z+16|0;b=k[v>>2]|0;if(!b){t=z+12|0;r=t;d=A;b=c}else{Pq(b);k[v>>2]=0;b=z+12|0;r=b;t=b;d=k[w>>2]|0;b=k[b>>2]|0}iF(b|0,0,(d<<2)+4|0)|0;q=k[(k[e>>2]|0)+8>>2]|0;o=k[(k[g>>2]|0)+4>>2]|0;Gg(z,((q|0)<(o|0)?o:q)<<1);a:do if((A|0)>0){q=z+20|0;o=z+24|0;m=0;b:while(1){d=k[r>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[s>>2]|0)){b=45;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=47;break}k[b>>2]=g;c=k[B>>2]|0;j=k[c+20>>2]|0;l=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;c:do if((e|0)<(h|0)){if((g|0)!=(k[s>>2]|0)){b=53;break b}while(1){f=+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((g|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(g+-1<<2)>>2]|0)>=(b|0):0){b=56;break b}k[c>>2]=g+1;c=k[s>>2]|0;Eg(q,c+1|0,1.0);d=k[q>>2]|0;p[d+(c<<3)>>3]=0.0;k[(k[o>>2]|0)+(c<<2)>>2]=b;p[d+(g<<3)>>3]=f;e=e+1|0;if((e|0)>=(h|0))break c;d=k[r>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[s>>2]|0)){b=53;break b}}}while(0);if((m|0)>=(A|0))break a}if((b|0)==45)Oa(16047,15958,414,16152);else if((b|0)==47)Oa(16161,15958,415,16152);else if((b|0)==53)Oa(16249,15958,392,16348);else if((b|0)==56)Oa(16371,15958,393,16348)}while(0);if((k[z+16>>2]|0)==0?(y=k[s>>2]|0,x=k[w>>2]|0,(x|0)>-1):0){d=k[r>>2]|0;b=x;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(x|0))do{b=b+1|0;k[d+(b<<2)>>2]=y}while((b|0)<(k[w>>2]|0))}i[z>>0]=1;Ag(a,z)|0;Pq(k[t>>2]|0);Pq(k[v>>2]|0);b=k[z+20>>2]|0;if(b|0)FA(b);b=k[z+24>>2]|0;if(b|0)FA(b)}else{b=b+4|0;Dg(a,k[(k[b>>2]|0)+8>>2]|0,A);r=a+28|0;k[r>>2]=0;s=a+12|0;t=a+4|0;iF(k[s>>2]|0,0,(k[t>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[t>>2]<<2|0)|0;z=k[(k[b>>2]|0)+8>>2]|0;y=k[(k[g>>2]|0)+4>>2]|0;Gg(a,((z|0)<(y|0)?y:z)<<1);d:do if((A|0)>0){q=a+20|0;o=a+24|0;m=0;e:while(1){d=k[s>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[r>>2]|0)){b=15;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=g;c=k[B>>2]|0;j=k[c+20>>2]|0;l=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;f:do if((e|0)<(h|0)){if((g|0)!=(k[r>>2]|0)){b=23;break e}while(1){f=+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((g|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(g+-1<<2)>>2]|0)>=(b|0):0){b=26;break e}k[c>>2]=g+1;y=k[r>>2]|0;Eg(q,y+1|0,1.0);z=k[q>>2]|0;p[z+(y<<3)>>3]=0.0;k[(k[o>>2]|0)+(y<<2)>>2]=b;p[z+(g<<3)>>3]=f;e=e+1|0;if((e|0)>=(h|0))break f;d=k[s>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[r>>2]|0)){b=23;break e}}}while(0);if((m|0)>=(A|0))break d}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if((k[a+16>>2]|0)==0?(w=k[r>>2]|0,v=k[t>>2]|0,(v|0)>-1):0){d=k[s>>2]|0;b=v;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(v|0))do{b=b+1|0;k[d+(b<<2)>>2]=w}while((b|0)<(k[t>>2]|0))}}Pq(k[B+28>>2]|0);Pq(k[B+32>>2]|0);b=k[B+36>>2]|0;if(b|0)FA(b);b=k[B+40>>2]|0;if(!b){u=C;return}FA(b);u=C;return}function Ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;e=a+8|0;p[e>>3]=0.0;d=a+16|0;c=b+4|0;g=k[(k[c>>2]|0)+8>>2]|0;b=b+8|0;f=k[(k[b>>2]|0)+4>>2]|0;i[d>>0]=0;h=a+20|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+28>>2]=0;Dg(d,g,f);k[a>>2]=d;p[e>>3]=0.0;Fj(d,k[b>>2]|0,k[c>>2]|0);return}function Fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0.0;x=u;u=u+48|0;w=x+8|0;t=x;e=k[c+8>>2]|0;v=c+4|0;f=k[v>>2]|0;i[w>>0]=0;d=w+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[w+8>>2]=e;k[w+28>>2]=0;e=Oq((f<<2)+4|0)|0;k[w+12>>2]=e;if(!e){x=Kb(4)|0;cF(x);Cc(x|0,2032,79)}k[d>>2]=f;r=w+16|0;q=k[v>>2]|0;s=w+12|0;iF(e|0,0,(f<<2)+4|0)|0;k[t>>2]=0;h=t+4|0;k[h>>2]=0;Ef(t,q);e=k[v>>2]|0;a:do if((e|0)>0){j=k[b>>2]|0;l=k[c+12>>2]|0;g=k[c+16>>2]|0;m=k[t>>2]|0;b:do if(!g){f=0;while(1){d=k[j+(f<<2)>>2]|0;if(!((d|0)>-1&(e|0)>(d|0))){d=12;break}d=l+(d<<2)|0;if(!d)break b;if((k[h>>2]|0)<=(f|0)){d=19;break}k[m+(f<<2)>>2]=(k[d+4>>2]|0)-(k[d>>2]|0);f=f+1|0;e=k[v>>2]|0;if((f|0)>=(e|0))break a}if((d|0)==12)Oa(13577,13744,122,13812);else if((d|0)==19)Oa(16605,15693,408,29907)}else{f=0;while(1){d=k[j+(f<<2)>>2]|0;if(!((d|0)>-1&(e|0)>(d|0))){d=12;break}e=l+(d<<2)|0;if(!e)break b;d=g+(d<<2)|0;if(!d)d=(k[e+4>>2]|0)-(k[e>>2]|0)|0;else d=k[d>>2]|0;if((k[h>>2]|0)<=(f|0)){d=19;break}k[m+(f<<2)>>2]=d;f=f+1|0;e=k[v>>2]|0;if((f|0)>=(e|0))break a}if((d|0)==12)Oa(13577,13744,122,13812);else if((d|0)==19)Oa(16605,15693,408,29907)}while(0);while(1){}}while(0);Gj(w,t);d=k[v>>2]|0;if((d|0)>0){n=c+20|0;o=c+24|0;q=c+12|0;c=c+16|0;m=0;do{e=k[(k[b>>2]|0)+(m<<2)>>2]|0;j=k[n>>2]|0;l=k[o>>2]|0;f=k[q>>2]|0;h=k[f+(e<<2)>>2]|0;g=k[c>>2]|0;if(!g)e=k[f+(e+1<<2)>>2]|0;else e=(k[g+(e<<2)>>2]|0)+h|0;if((h|0)<(e|0)){d=h;do{y=+p[j+(d<<3)>>3];h=Hj(w,k[l+(d<<2)>>2]|0,m)|0;p[h>>3]=y;d=d+1|0}while((d|0)<(e|0));d=k[v>>2]|0}m=m+1|0}while((m|0)<(d|0))}Ag(a,w)|0;d=k[t>>2]|0;if(d|0)Pq(k[d+-4>>2]|0);Pq(k[s>>2]|0);Pq(k[r>>2]|0);d=k[w+20>>2]|0;if(d|0)FA(d);d=k[w+24>>2]|0;if(!d){u=x;return}FA(d);u=x;return}function Gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;l=k[a+16>>2]|0;v=a+4|0;n=k[v>>2]|0;c=n<<2;if(l|0){s=Oq(c+4|0)|0;t=s;if(!s){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}a:do if((n|0)>0){i=k[a+12>>2]|0;j=k[b>>2]|0;h=k[b+4>>2]|0;g=0;c=0;while(1){k[s+(g<<2)>>2]=c;d=g;g=g+1|0;e=k[l+(d<<2)>>2]|0;f=(k[i+(g<<2)>>2]|0)-(k[i+(d<<2)>>2]|0)-e|0;if((h|0)<=(d|0))break;b=k[j+(d<<2)>>2]|0;c=e+c+((b|0)<(f|0)?f:b)|0;if((g|0)>=(n|0)){m=c;break a}}Oa(16605,15693,162,29907)}else m=0;while(0);k[s+(n<<2)>>2]=m;r=a+20|0;Eg(r,m,0.0);d=k[v>>2]|0;q=a+12|0;if((d|0)>0){c=k[q>>2]|0;o=a+16|0;n=a+24|0;do{g=d;d=d+-1|0;i=s+(d<<2)|0;f=k[i>>2]|0;j=c+(d<<2)|0;e=k[j>>2]|0;if((f|0)>(e|0)?(u=k[(k[o>>2]|0)+(d<<2)>>2]|0,(u|0)>0):0){l=k[n>>2]|0;m=k[r>>2]|0;h=u;do{v=h;h=h+-1|0;k[l+(f+h<<2)>>2]=k[l+(e+h<<2)>>2];e=k[j>>2]|0;f=k[i>>2]|0;p[m+(f+h<<3)>>3]=+p[m+(e+h<<3)>>3]}while((v|0)>1)}}while((g|0)>1)}else c=k[q>>2]|0;k[q>>2]=t;Pq(c);return}t=Oq(c)|0;m=a+16|0;k[m>>2]=t;if(!t){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}b:do if((n|0)>0){f=b+4|0;g=k[b>>2]|0;h=a+12|0;d=0;c=0;e=0;while(1){k[t+(d<<2)>>2]=e;if((k[f>>2]|0)<=(d|0))break;u=k[g+(d<<2)>>2]|0;r=k[h>>2]|0;s=d;d=d+1|0;e=u+e+(k[r+(d<<2)>>2]|0)-(k[r+(s<<2)>>2]|0)|0;c=u+c|0;if((d|0)>=(k[v>>2]|0)){i=c;break b}}Oa(16605,15693,162,29907)}else i=0;while(0);s=a+20|0;c=k[a+28>>2]|0;h=c+i|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>536870911?-1:h<<3)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[s>>2]|0;nF(j|0,g|0,c<<3|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[s>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[s>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}e=k[v>>2]|0;r=k[a+12>>2]|0;if((e|0)>0){c=k[m>>2]|0;q=a+24|0;d=k[r+(e<<2)>>2]|0;do{n=e;e=e+-1|0;o=r+(e<<2)|0;g=k[o>>2]|0;m=d-g|0;if((m|0)>0){i=k[q>>2]|0;j=t+(e<<2)|0;l=k[s>>2]|0;h=m;f=k[j>>2]|0;d=g;do{a=h;h=h+-1|0;k[i+(f+h<<2)>>2]=k[i+(d+h<<2)>>2];d=k[o>>2]|0;f=k[j>>2]|0;p[l+(f+h<<3)>>3]=+p[l+(d+h<<3)>>3]}while((a|0)>1)}else{d=g;f=k[t+(e<<2)>>2]|0}k[o>>2]=f;k[c+(e<<2)>>2]=m}while((n|0)>1);e=k[v>>2]|0}else c=k[m>>2]|0;d=e+-1|0;c=(k[c+(d<<2)>>2]|0)+(k[r+(d<<2)>>2]|0)|0;if((e|0)<=0)Oa(16605,15693,162,29907);if((k[b+4>>2]|0)<(e|0))Oa(16605,15693,162,29907);k[r+(e<<2)>>2]=c+(k[(k[b>>2]|0)+(d<<2)>>2]|0);Eg(s,k[r+(k[v>>2]<<2)>>2]|0,0.0);return}function Hj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+16|0;r=v;if((b|0)<=-1)Oa(20638,15958,1131,20683);h=k[a+8>>2]|0;if(!((c|0)>-1&(h|0)>(b|0)))Oa(20638,15958,1131,20683);t=a+4|0;e=k[t>>2]|0;if((e|0)<=(c|0))Oa(20638,15958,1131,20683);f=k[a+16>>2]|0;a:do if(!f){g=k[a+12>>2]|0;if((k[g+(e<<2)>>2]|0)!=(k[g>>2]|0)){f=Oq(e<<2)|0;k[a+16>>2]=f;if(!f){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}if((e|0)>0)e=0;else break;while(1){q=e;e=e+1|0;k[f+(q<<2)>>2]=(k[g+(e<<2)>>2]|0)-(k[g+(q<<2)>>2]|0);if((e|0)>=(k[t>>2]|0))break a}}m=a+20|0;n=a+32|0;if((k[n>>2]|0)==0?(i=k[a+28>>2]|0,o=i+(h<<1)|0,(o|0)>0):0){j=DA(o>>>0>536870911?-1:o<<3)|0;l=DA(o>>>0>1073741823?-1:o<<2)|0;e=(i|0)<(o|0)?i:o;if((e|0)>0){i=k[m>>2]|0;nF(j|0,i|0,e<<3|0)|0;f=a+24|0;g=k[f>>2]|0;nF(l|0,g|0,e<<2|0)|0;e=f;f=g;h=i}else{i=k[m>>2]|0;e=a+24|0;g=k[e>>2]|0;f=g;h=i}k[m>>2]=j;k[e>>2]=l;k[n>>2]=o;if(f|0)FA(g);if(h|0)FA(i)}f=k[t>>2]|0;e=f<<2;h=Oq(e)|0;k[a+16>>2]=h;if(!h){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}iF(h|0,0,e|0)|0;g=k[n>>2]|0;if((f|0)<1)f=h;else{f=k[a+12>>2]|0;e=1;while(1){k[f+(e<<2)>>2]=g;if((e|0)<(k[t>>2]|0))e=e+1|0;else{f=h;break}}}}while(0);q=a+20|0;l=a+32|0;o=k[l>>2]|0;n=a+12|0;h=k[n>>2]|0;i=k[h+(c<<2)>>2]|0;if((i|0)==(o|0)){g=a+28|0;i=k[g>>2]|0;e=c;while(1){if(k[f+(e<<2)>>2]|0)break;k[h+(e<<2)>>2]=i;if((e|0)>0)e=e+-1|0;else break}h=f+(c<<2)|0;k[h>>2]=(k[h>>2]|0)+1;g=k[g>>2]|0;Eg(q,g+1|0,1.0);h=k[q>>2]|0;p[h+(g<<3)>>3]=0.0;k[(k[a+24>>2]|0)+(g<<2)>>2]=b;g=k[l>>2]|0;if((o|0)!=(g|0)?(d=k[t>>2]|0,(d|0)>(c|0)):0){f=k[n>>2]|0;do{c=c+1|0;e=f+(c<<2)|0;if((k[e>>2]|0)==(o|0)){k[e>>2]=g;d=k[t>>2]|0}}while((c|0)<(d|0))}b=h+(i<<3)|0;u=v;return b|0}j=c+1|0;if((k[h+(j<<2)>>2]|0)==(o|0)){m=a+16|0;e=f+(c<<2)|0;f=k[e>>2]|0;g=a+28|0;d=k[g>>2]|0;if((f+i|0)==(d|0)){k[e>>2]=f+1;Eg(q,(k[g>>2]|0)+1|0,0.0);g=k[l>>2]|0;if((o|0)!=(g|0)?(s=k[t>>2]|0,(s|0)>(c|0)):0){h=k[n>>2]|0;f=j;d=s;while(1){e=h+(f<<2)|0;if((k[e>>2]|0)==(o|0)){k[e>>2]=g;d=k[t>>2]|0}if((f|0)<(d|0))f=f+1|0;else break}}g=k[(k[n>>2]|0)+(c<<2)>>2]|0;e=(k[(k[m>>2]|0)+(c<<2)>>2]|0)+g|0;d=e+-1|0;f=k[a+24>>2]|0;b:do if((d|0)>(g|0)){c=d;while(1){d=e+-2|0;e=k[f+(d<<2)>>2]|0;if((e|0)<=(b|0)){d=c;break b}k[f+(c<<2)>>2]=e;t=k[q>>2]|0;p[t+(c<<3)>>3]=+p[t+(d<<3)>>3];d=c+-1|0;if((d|0)>(g|0)){e=c;c=d}else break}}while(0);k[f+(d<<2)>>2]=b;b=(k[q>>2]|0)+(d<<3)|0;p[b>>3]=0.0;u=v;return b|0}}else d=k[a+28>>2]|0;do if((d|0)!=(o|0)){Eg(q,o,0.0);t=k[t>>2]|0;k[r>>2]=t;k[r+8>>2]=2;if((t|0)>-1){Ij(a,r);break}else Oa(11919,12068,74,12145)}while(0);b=Jj(a,b,c)|0;u=v;return b|0}function Ij(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;j=k[a+16>>2]|0;v=a+4|0;m=k[v>>2]|0;c=m<<2;if(j|0){s=Oq(c+4|0)|0;t=s;if(!s){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}a:do if((m|0)>0){h=k[a+12>>2]|0;i=b+8|0;g=k[b>>2]|0;f=0;c=0;while(1){k[s+(f<<2)>>2]=c;b=f;f=f+1|0;d=k[j+(b<<2)>>2]|0;e=(k[h+(f<<2)>>2]|0)-(k[h+(b<<2)>>2]|0)-d|0;if((g|0)<=(b|0))break;b=k[i>>2]|0;c=d+c+((b|0)<(e|0)?e:b)|0;if((f|0)>=(m|0)){l=c;break a}}Oa(16605,15693,162,29907)}else l=0;while(0);k[s+(m<<2)>>2]=l;r=a+20|0;Eg(r,l,0.0);d=k[v>>2]|0;q=a+12|0;if((d|0)>0){c=k[q>>2]|0;o=a+16|0;n=a+24|0;do{g=d;d=d+-1|0;i=s+(d<<2)|0;f=k[i>>2]|0;j=c+(d<<2)|0;e=k[j>>2]|0;if((f|0)>(e|0)?(u=k[(k[o>>2]|0)+(d<<2)>>2]|0,(u|0)>0):0){l=k[n>>2]|0;m=k[r>>2]|0;h=u;do{v=h;h=h+-1|0;k[l+(f+h<<2)>>2]=k[l+(e+h<<2)>>2];e=k[j>>2]|0;f=k[i>>2]|0;p[m+(f+h<<3)>>3]=+p[m+(e+h<<3)>>3]}while((v|0)>1)}}while((g|0)>1)}else c=k[q>>2]|0;k[q>>2]=t;Pq(c);return}s=Oq(c)|0;n=a+16|0;k[n>>2]=s;if(!s){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}b:do if((m|0)>0){f=b+8|0;g=a+12|0;d=0;c=0;e=0;while(1){k[s+(d<<2)>>2]=e;if((k[b>>2]|0)<=(d|0))break;u=k[f>>2]|0;r=k[g>>2]|0;t=d;d=d+1|0;e=u+e+(k[r+(d<<2)>>2]|0)-(k[r+(t<<2)>>2]|0)|0;c=u+c|0;if((d|0)>=(k[v>>2]|0)){h=c;break b}}Oa(16605,15693,162,29907)}else h=0;while(0);r=a+20|0;c=k[a+28>>2]|0;h=c+h|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>536870911?-1:h<<3)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[r>>2]|0;nF(j|0,g|0,c<<3|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[r>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[r>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}d=k[v>>2]|0;q=k[a+12>>2]|0;if((d|0)>0){c=k[n>>2]|0;o=a+24|0;e=k[q+(d<<2)>>2]|0;do{m=d;d=d+-1|0;n=q+(d<<2)|0;f=k[n>>2]|0;l=e-f|0;if((l|0)>0){h=k[o>>2]|0;i=s+(d<<2)|0;j=k[r>>2]|0;g=l;e=f;f=k[i>>2]|0;do{a=g;g=g+-1|0;k[h+(f+g<<2)>>2]=k[h+(e+g<<2)>>2];e=k[n>>2]|0;f=k[i>>2]|0;p[j+(f+g<<3)>>3]=+p[j+(e+g<<3)>>3]}while((a|0)>1)}else{e=f;f=k[s+(d<<2)>>2]|0}k[n>>2]=f;k[c+(d<<2)>>2]=l}while((m|0)>1);d=k[v>>2]|0}else c=k[n>>2]|0;a=d+-1|0;c=(k[c+(a<<2)>>2]|0)+(k[q+(a<<2)>>2]|0)|0;if((d|0)<=0)Oa(16605,15693,162,29907);if((k[b>>2]|0)<(d|0))Oa(16605,15693,162,29907);k[q+(d<<2)>>2]=c+(k[b+8>>2]|0);Eg(r,k[q+(k[v>>2]<<2)>>2]|0,0.0);return}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=u;u=u+16|0;d=l;e=k[a+16>>2]|0;if(!e)Oa(16634,15958,1251,20690);h=a+12|0;i=k[h>>2]|0;g=k[i+(c<<2)>>2]|0;f=k[e+(c<<2)>>2]|0;if((f|0)>=((k[i+(c+1<<2)>>2]|0)-g|0)){k[d>>2]=c;k[d+4>>2]=(f|0)>2?f:2;Kj(a,d);f=k[a+16>>2]|0;e=f;f=k[f+(c<<2)>>2]|0;g=k[(k[h>>2]|0)+(c<<2)>>2]|0}c=e+(c<<2)|0;d=f+g|0;i=k[a+24>>2]|0;h=a+20|0;a:do if((f|0)>0){while(1){e=d+-1|0;f=k[i+(e<<2)>>2]|0;if((f|0)<=(b|0))break;k[i+(d<<2)>>2]=f;a=k[h>>2]|0;p[a+(d<<3)>>3]=+p[a+(e<<3)>>3];if((e|0)>(g|0))d=e;else{j=e;break a}}if((f|0)==(b|0))Oa(20709,15958,1272,20690);else j=d}else j=d;while(0);k[c>>2]=(k[c>>2]|0)+1;k[i+(j<<2)>>2]=b;b=(k[h>>2]|0)+(j<<3)|0;p[b>>3]=0.0;u=l;return b|0}function Kj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0;h=k[a+16>>2]|0;u=a+4|0;i=k[u>>2]|0;c=i<<2;if(h|0){r=Oq(c+4|0)|0;s=r;if(!r){u=Kb(4)|0;cF(u);Cc(u|0,2032,79)}if((i|0)>0){f=k[a+12>>2]|0;g=k[b>>2]|0;e=k[b+4>>2]|0;d=0;c=0;do{k[r+(d<<2)>>2]=c;b=d;d=d+1|0;o=k[h+(b<<2)>>2]|0;q=(k[f+(d<<2)>>2]|0)-(k[f+(b<<2)>>2]|0)-o|0;b=(g|0)==(b|0)?e:0;c=o+c+((b|0)<(q|0)?q:b)|0}while((d|0)<(i|0))}else c=0;k[r+(i<<2)>>2]=c;q=a+20|0;Eg(q,c,0.0);d=k[u>>2]|0;o=a+12|0;if((d|0)>0){c=k[o>>2]|0;n=a+16|0;a=a+24|0;do{g=d;d=d+-1|0;i=r+(d<<2)|0;f=k[i>>2]|0;j=c+(d<<2)|0;e=k[j>>2]|0;if((f|0)>(e|0)?(t=k[(k[n>>2]|0)+(d<<2)>>2]|0,(t|0)>0):0){l=k[a>>2]|0;m=k[q>>2]|0;h=t;do{u=h;h=h+-1|0;k[l+(f+h<<2)>>2]=k[l+(e+h<<2)>>2];e=k[j>>2]|0;f=k[i>>2]|0;p[m+(f+h<<3)>>3]=+p[m+(e+h<<3)>>3]}while((u|0)>1)}}while((g|0)>1)}else c=k[o>>2]|0;k[o>>2]=s;Pq(c);return}r=Oq(c)|0;m=a+16|0;k[m>>2]=r;if(!r){u=Kb(4)|0;cF(u);Cc(u|0,2032,79)}if((i|0)>0){g=b+4|0;f=k[a+12>>2]|0;d=0;c=0;e=0;do{k[r+(d<<2)>>2]=e;t=(k[b>>2]|0)==(d|0)?k[g>>2]|0:0;s=d;d=d+1|0;e=t+e+(k[f+(d<<2)>>2]|0)-(k[f+(s<<2)>>2]|0)|0;c=t+c|0}while((d|0)<(k[u>>2]|0))}else c=0;q=a+20|0;d=k[a+28>>2]|0;h=d+c|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>536870911?-1:h<<3)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(d|0)<(h|0)?d:h;if((c|0)>0){g=k[q>>2]|0;nF(j|0,g|0,c<<3|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[q>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[q>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}d=k[u>>2]|0;o=k[a+12>>2]|0;if((d|0)>0){c=k[m>>2]|0;n=a+24|0;e=k[o+(d<<2)>>2]|0;do{m=d;d=d+-1|0;a=o+(d<<2)|0;f=k[a>>2]|0;l=e-f|0;if((l|0)>0){h=k[n>>2]|0;i=r+(d<<2)|0;j=k[q>>2]|0;g=l;e=f;f=k[i>>2]|0;do{t=g;g=g+-1|0;k[h+(f+g<<2)>>2]=k[h+(e+g<<2)>>2];e=k[a>>2]|0;f=k[i>>2]|0;p[j+(f+g<<3)>>3]=+p[j+(e+g<<3)>>3]}while((t|0)>1)}else{e=f;f=k[r+(d<<2)>>2]|0}k[a>>2]=f;k[c+(d<<2)>>2]=l}while((m|0)>1);d=k[u>>2]|0}else c=k[m>>2]|0;t=d+-1|0;k[o+(d<<2)>>2]=(k[c+(t<<2)>>2]|0)+(k[o+(t<<2)>>2]|0)+((k[b>>2]|0)==(t|0)?k[b+4>>2]|0:0);Eg(q,k[o+(k[u>>2]<<2)>>2]|0,0.0);return}function Lj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+24>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}mf(a,d,c);c=k[b>>2]|0;d=k[c+24>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Mj(h,i,a)|0;return}mf(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Mj(h,i,a)|0;return}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+160|0;w=z+120|0;y=z+108|0;x=z+96|0;o=z+88|0;l=z+56|0;g=z+152|0;m=z;q=z+28|0;if(!(i[a>>0]|0))Oa(20840,20281,194,18314);d=k[a+28>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(20917,20281,195,18314);r=k[a+172>>2]|0;k[y>>2]=0;v=y+4|0;k[v>>2]=0;s=y+8|0;k[s>>2]=0;k[x>>2]=0;j=x+4|0;k[j>>2]=0;h=x+8|0;k[h>>2]=0;k[w>>2]=a;k[w+4>>2]=b;i[w+8>>0]=1;mf(y,d,k[b+8>>2]|0);Nj(w,y);e=k[y>>2]|0;b=k[v>>2]|0;d=k[s>>2]|0;if(!((k[j>>2]|0)==(b|0)?(k[h>>2]|0)==(d|0):0)?(mf(x,b,d),!((k[j>>2]|0)==(b|0)?(k[h>>2]|0)==(d|0):0)):0)Oa(12160,12207,721,12285);f=k[x>>2]|0;d=aa(d,b)|0;if((d|0)>0){b=0;do{p[f+(b<<3)>>3]=+p[e+(b<<3)>>3];b=b+1|0}while((b|0)!=(d|0))}n=a+24|0;b=k[n>>2]|0;f=k[v>>2]|0;mf(y,(b|0)<(f|0)?f:b,k[s>>2]|0);b=a+56|0;if((r|0)<=-1)Oa(14177,13744,147,13812);if((k[b+8>>2]|0)<(r|0))Oa(14177,13744,147,13812);if((k[b+4>>2]|0)<(r|0))Oa(14177,13744,147,13812);i[l>>0]=0;i[l+4>>0]=0;f=l+5|0;i[f>>0]=i[g>>0]|0;i[f+1>>0]=i[g+1>>0]|0;i[f+2>>0]=i[g+2>>0]|0;k[l+8>>2]=b;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=r;k[l+24>>2]=r;b=k[h>>2]|0;h=k[x>>2]|0;k[m>>2]=h;k[m+4>>2]=r;k[m+8>>2]=b;if(!((b|r|0)>-1|(h|0)==0))Oa(13818,13988,175,14058);k[m+12>>2]=x;k[m+16>>2]=0;k[m+20>>2]=0;j=k[j>>2]|0;k[m+24>>2]=j;if(!((b|0)>-1&(j|0)>=(r|0)))Oa(14177,13744,147,13812);k[o>>2]=l;k[o+4>>2]=m;b=k[s>>2]|0;m=k[y>>2]|0;k[q>>2]=m;k[q+4>>2]=r;k[q+8>>2]=b;if(!((b|r|0)>-1|(m|0)==0))Oa(13818,13988,175,14058);k[q+12>>2]=y;k[q+16>>2]=0;k[q+20>>2]=0;m=k[v>>2]|0;k[q+24>>2]=m;if(!((b|0)>-1&(m|0)>=(r|0)))Oa(14177,13744,147,13812);Oj(q,o,w);e=k[v>>2]|0;b=e-r|0;f=k[s>>2]|0;g=(k[y>>2]|0)+(r<<3)|0;d=(f|b|0)>-1;if(!(d|(g|0)==0))Oa(13818,13988,175,14058);if((b|r|f|0)<=-1)Oa(14177,13744,147,13812);if(!d)Oa(11919,12068,74,12145);if((b|0)>0&(f|0)>0){d=b<<3;b=0;do{iF(g+((aa(b,e)|0)<<3)|0,0,d|0)|0;b=b+1|0}while((b|0)!=(f|0))}do if(!(k[a+140>>2]|0)){m=k[n>>2]|0;j=k[s>>2]|0;l=k[y>>2]|0;if(!((j|m|0)>-1|(l|0)==0))Oa(13818,13988,175,14058);h=k[v>>2]|0;if((m|0)<=-1)Oa(14177,13744,147,13812);if(!((j|0)>-1&(h|0)>=(m|0)))Oa(14177,13744,147,13812);b=c+4|0;if(!((k[b>>2]|0)==(m|0)?(k[c+8>>2]|0)==(j|0):0))t=52;do if((t|0)==52){mf(c,m,j);if((k[b>>2]|0)!=(m|0))Oa(12160,12207,721,12285);if((k[c+8>>2]|0)==(j|0))break;Oa(12160,12207,721,12285)}while(0);e=k[c>>2]|0;if((m|0)>0&(j|0)>0)b=0;else break;do{f=aa(b,m)|0;g=aa(b,h)|0;d=0;do{p[e+(d+f<<3)>>3]=+p[l+(d+g<<3)>>3];d=d+1|0}while((d|0)!=(m|0));b=b+1|0}while((b|0)!=(j|0))}else{if(!(i[a>>0]|0))Oa(17611,20281,181,21094);b=a+152|0;f=k[n>>2]|0;g=k[s>>2]|0;e=k[y>>2]|0;if(!((g|f|0)>-1|(e|0)==0))Oa(13818,13988,175,14058);d=k[v>>2]|0;if((f|0)<=-1)Oa(14177,13744,147,13812);if(!((g|0)>-1&(d|0)>=(f|0)))Oa(14177,13744,147,13812);k[w>>2]=b;k[w+4>>2]=e;k[w+8>>2]=f;k[w+12>>2]=g;k[w+16>>2]=y;k[w+20>>2]=0;k[w+24>>2]=0;k[w+28>>2]=d;if((k[a+156>>2]|0)!=(f|0))Oa(14710,14850,97,14920);d=k[a+156>>2]|0;if(!((k[c+4>>2]|0)==(d|0)?(k[c+8>>2]|0)==(g|0):0)){mf(c,d,g);b=k[w>>2]|0}Qj(c,b,w+4|0)}while(0);k[a+4>>2]=0;b=k[x>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[y>>2]|0;if(!b){u=z;return 1}Pq(k[b+-4>>2]|0);u=z;return 1}function Nj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;f=k[a>>2]|0;C=k[f+28>>2]|0;f=k[f+24>>2]|0;C=(f|0)<(C|0)?f:C;f=a+4|0;g=k[f>>2]|0;d=k[g>>2]|0;D=k[g+4>>2]|0;g=k[g+8>>2]|0;E=b+4|0;if(!((k[E>>2]|0)==(D|0)?(k[b+8>>2]|0)==(g|0):0)){mf(b,D,g);if((k[E>>2]|0)!=(D|0))Oa(12160,12207,721,12285);if((k[b+8>>2]|0)!=(g|0))Oa(12160,12207,721,12285)}j=k[b>>2]|0;e=aa(g,D)|0;if((e|0)>0){c=0;do{p[j+(c<<3)>>3]=+p[d+(c<<3)>>3];c=c+1|0}while((c|0)!=(e|0))}c=(k[(k[a>>2]|0)+100>>2]|0)==(k[(k[f>>2]|0)+4>>2]|0);if(!(i[a+8>>0]|0)){if(!c)Oa(21020,20281,635,21087);y=b+8|0;if((g|0)<=0)return;v=(C|0)>0;w=(D|0)>-1;x=(D|0)>0;u=0;c=j;a:while(1){if(v){t=aa(D,u)|0;s=C;do{r=s;s=s+-1|0;g=k[a>>2]|0;e=g+92|0;if((k[e+4>>2]|0)<(r|0)){F=58;break a}j=c+(t<<3)|0;if(!(w|(j|0)==0)){F=60;break a}if((k[y>>2]|0)<=(u|0)){F=62;break a}if((k[e+8>>2]|0)!=(D|0)){F=64;break a}if(!x){F=66;break a}o=k[e+20>>2]|0;q=k[e+24>>2]|0;n=(k[e+12>>2]|0)+(s<<2)|0;if(!n){F=68;break a}d=k[n>>2]|0;l=k[e+16>>2]|0;m=(l|0)==0;if(!m?(B=l+(s<<2)|0,(B|0)!=0):0)e=(k[B>>2]|0)+d|0;else e=k[n+4>>2]|0;do if((d|0)<(e|0)){h=0.0;f=d;do{h=h+ +p[o+(f<<3)>>3]*+p[j+(k[q+(f<<2)>>2]<<3)>>3];f=f+1|0}while((f|0)!=(e|0));if(!(h==0.0)){if((k[g+132>>2]|0)<(r|0)){F=77;break a}h=h*+p[(k[g+128>>2]|0)+(s<<3)>>3];if(!w){F=79;break a}c=k[b>>2]|0;e=k[E>>2]|0;f=c+((aa(e,u)|0)<<3)|0;if(!((e|0)>-1|(f|0)==0)){F=81;break a}if((e|0)!=(D|0)){F=83;break a}do if(m)F=86;else{e=l+(s<<2)|0;if(!e){F=86;break}A=(k[e>>2]|0)+d|0}while(0);if((F|0)==86){F=0;A=k[n+4>>2]|0}if((d|0)>=(A|0))break;do{z=f+(k[q+(d<<2)>>2]<<3)|0;p[z>>3]=+p[z>>3]-h*+p[o+(d<<3)>>3];d=d+1|0}while((d|0)!=(A|0))}}while(0)}while((r|0)>1)}u=u+1|0;if((u|0)>=(k[y>>2]|0)){F=91;break}}switch(F|0){case 58:{Oa(13577,13744,122,13812);break}case 60:{Oa(13818,13988,175,14058);break}case 62:{Oa(13577,13744,122,13812);break}case 64:{Oa(20474,20497,26,20575);break}case 66:{Oa(20579,20497,27,20575);break}case 68:while(1){}case 77:{Oa(16605,15693,180,29764);break}case 79:{Oa(11919,12068,74,12145);break}case 81:{Oa(13818,13988,175,14058);break}case 83:{Oa(14392,12207,710,12285);break}case 91:return}}else{if(!c)Oa(21020,20281,620,21087);x=b+8|0;if((g|0)<=0)return;u=(C|0)>0;v=(D|0)>-1;w=(D|0)>0;t=0;c=j;b:while(1){if(u){s=aa(D,t)|0;r=0;do{g=k[a>>2]|0;e=g+92|0;if((k[e+4>>2]|0)<=(r|0)){F=17;break b}j=c+(s<<3)|0;if(!(v|(j|0)==0)){F=19;break b}if((k[x>>2]|0)<=(t|0)){F=21;break b}if((k[e+8>>2]|0)!=(D|0)){F=23;break b}if(!w){F=25;break b}o=k[e+20>>2]|0;q=k[e+24>>2]|0;n=(k[e+12>>2]|0)+(r<<2)|0;if(!n){F=27;break b}d=k[n>>2]|0;l=k[e+16>>2]|0;m=(l|0)==0;if(!m?(z=l+(r<<2)|0,(z|0)!=0):0)e=(k[z>>2]|0)+d|0;else e=k[n+4>>2]|0;do if((d|0)<(e|0)){h=0.0;f=d;do{h=h+ +p[o+(f<<3)>>3]*+p[j+(k[q+(f<<2)>>2]<<3)>>3];f=f+1|0}while((f|0)!=(e|0));if(!(h==0.0)){if((k[g+132>>2]|0)<=(r|0)){F=36;break b}h=h*+p[(k[g+128>>2]|0)+(r<<3)>>3];if(!v){F=38;break b}c=k[b>>2]|0;e=k[E>>2]|0;f=c+((aa(e,t)|0)<<3)|0;if(!((e|0)>-1|(f|0)==0)){F=40;break b}if((e|0)!=(D|0)){F=42;break b}do if(m)F=45;else{e=l+(r<<2)|0;if(!e){F=45;break}y=(k[e>>2]|0)+d|0}while(0);if((F|0)==45){F=0;y=k[n+4>>2]|0}if((d|0)>=(y|0))break;do{B=f+(k[q+(d<<2)>>2]<<3)|0;p[B>>3]=+p[B>>3]-h*+p[o+(d<<3)>>3];d=d+1|0}while((d|0)!=(y|0))}}while(0);r=r+1|0}while((r|0)<(C|0))}t=t+1|0;if((t|0)>=(k[x>>2]|0)){F=91;break}}switch(F|0){case 17:{Oa(13577,13744,122,13812);break}case 19:{Oa(13818,13988,175,14058);break}case 21:{Oa(13577,13744,122,13812);break}case 23:{Oa(20474,20497,26,20575);break}case 25:{Oa(20579,20497,27,20575);break}case 27:while(1){}case 36:{Oa(16605,15693,180,29764);break}case 38:{Oa(11919,12068,74,12145);break}case 40:{Oa(13818,13988,175,14058);break}case 42:{Oa(14392,12207,710,12285);break}case 91:return}}}function Oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=k[b>>2]|0;o=k[n+24>>2]|0;c=k[b+4>>2]|0;m=k[c+8>>2]|0;g=k[a+4>>2]|0;h=(g|0)==(o|0);if(!h)Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(m|0)?(k[a+8>>2]|0)!=(m|0):0)Oa(14445,14320,257,12780);i=k[a>>2]|0;j=k[c>>2]|0;if((i|0)!=(j|0)){l=k[c+24>>2]|0;if((g|0)!=(k[c+4>>2]|0))Oa(14445,14320,257,12780);if((m|0)!=(k[c+8>>2]|0))Oa(14445,14320,257,12780);d=k[a+24>>2]|0;if((g|0)>0&(m|0)>0){c=0;do{e=aa(c,d)|0;f=aa(c,l)|0;b=0;do{p[i+(b+e<<3)>>3]=+p[j+(b+f<<3)>>3];b=b+1|0}while((b|0)!=(g|0));c=c+1|0}while((c|0)!=(m|0))}}if((o|0)!=(k[n+20>>2]|0)|h^1)Oa(18358,18431,180,18516);else{Pj(n+4|0,a);return}}function Pj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=k[b+8>>2]|0;if((B|0)<=0)return;y=k[a+4>>2]|0;C=k[a+20>>2]|0;D=(C|0)>0;A=k[b>>2]|0;t=k[b+24>>2]|0;u=k[a+12>>2]|0;v=y+20|0;w=y+24|0;x=y+12|0;y=y+16|0;z=k[a+8>>2]|0;n=(k[a+16>>2]|0)+z|0;j=0;a:while(1){if(D){o=aa(t,j)|0;l=C;do{m=l;l=l+-1|0;q=A+(o+l<<3)|0;e=+p[q>>3];b:do if(e!=0.0){f=u+l|0;r=k[v>>2]|0;s=k[w>>2]|0;g=k[x>>2]|0;b=k[g+(f<<2)>>2]|0;h=k[y>>2]|0;i=(h|0)==0;if(i)d=k[g+(u+m<<2)>>2]|0;else d=(k[h+(f<<2)>>2]|0)+b|0;c:do if((b|0)<(d|0)){a=b;do{if((k[s+(a<<2)>>2]|0)>=(z|0))break c;a=a+1|0}while((a|0)<(d|0))}else a=b;while(0);if((a|0)>=(d|0)){b=20;break a}while(1){c=k[s+(a<<2)>>2]|0;if((c|0)>=(n|0)){b=20;break a}if((c-z|0)==(l|0))break;a=a+1|0;if((a|0)>=(d|0)){b=20;break a}}if((c-z|0)!=(l|0)){b=20;break a}p[q>>3]=e/+p[r+(a<<3)>>3];if(i)c=k[g+(u+m<<2)>>2]|0;else c=(k[h+(f<<2)>>2]|0)+b|0;d:do if((b|0)<(c|0))do{if((k[s+(b<<2)>>2]|0)>=(z|0))break d;b=b+1|0}while((b|0)<(c|0));while(0);if((b|0)<(c|0))do{a=k[s+(b<<2)>>2]|0;if((a|0)>=(n|0))break b;a=a-z|0;if((a|0)>=(l|0))break b;i=A+(o+a<<3)|0;p[i>>3]=+p[i>>3]-+p[q>>3]*+p[r+(b<<3)>>3];b=b+1|0}while((b|0)<(c|0))}while(0)}while((m|0)>1)}j=j+1|0;if((j|0)>=(B|0)){b=3;break}}if((b|0)==3)return;else if((b|0)==20)Oa(18529,18431,160,13144)}function Qj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;o=k[c>>2]|0;q=k[c+4>>2]|0;m=k[c+8>>2]|0;j=k[c+24>>2]|0;n=k[a>>2]|0;if((n|0)==(o|0)?(e=a+4|0,(k[e>>2]|0)==(j|0)):0){d=b+4|0;s=k[d>>2]|0;if((s|0)<=-1)Oa(13359,12702,312,12780);if(!s)return;c=Oq(s+16|0)|0;t=c+16&-16;if(!c){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}k[t+-4>>2]=c;if(!t){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}r=t;iF(r|0,0,s|0)|0;q=k[d>>2]|0;a:do if((q|0)>0){n=k[b>>2]|0;o=k[a>>2]|0;l=k[a+8>>2]|0;m=(l|0)>-1;h=k[e>>2]|0;j=(l|0)>0;c=0;b:while(1){c:do if((c|0)<(q|0)){d=(c|0)>-1;while(1){if(!(d&(s|0)>(c|0))){v=34;break b}if(!(i[r+c>>0]|0)){f=c;break c}c=c+1|0;if((c|0)>=(q|0)){f=c;break}}}else f=c;while(0);if((f|0)>=(q|0)){v=60;break a}c=f+1|0;i[r+f>>0]=1;u=k[n+(f<<2)>>2]|0;if((u|0)!=(f|0)){e=o+(f<<3)|0;d=(e|0)==0|m;g=(f|0)>-1&(h|0)>(f|0);if(m){if(d)d=u;else{v=46;break}do{a=o+(d<<3)|0;if(!((d|0)>-1&(h|0)>(d|0))){v=57;break b}if(!g){v=59;break b}if(j){b=0;do{w=aa(b,h)|0;y=a+(w<<3)|0;w=e+(w<<3)|0;x=+p[y>>3];p[y>>3]=+p[w>>3];p[w>>3]=x;b=b+1|0}while((b|0)!=(l|0))}i[r+d>>0]=1;d=k[n+(d<<2)>>2]|0}while((d|0)!=(f|0))}else{if(d)d=u;else{v=54;break}do{if(o+(d<<3)|0){v=55;break b}if(!((d|0)>-1&(h|0)>(d|0))){v=57;break b}if(!g){v=59;break b}if(j){v=52;break b}i[r+d>>0]=1;d=k[n+(d<<2)>>2]|0}while((d|0)!=(f|0))}}if((c|0)>=(q|0))break a}if((v|0)==34)Oa(16605,15693,408,29907);else if((v|0)==46)if((u|0)>-1&(h|0)>(u|0))Oa(13818,13988,175,14058);else Oa(13577,13744,122,13812);else if((v|0)==52)sb();else if((v|0)==54){if(o+(u<<3)|0)Oa(13818,13988,175,14058);if((u|0)>-1&(h|0)>(u|0))Oa(13818,13988,175,14058);else Oa(13577,13744,122,13812)}else if((v|0)==55)Oa(13818,13988,175,14058);else if((v|0)==57)Oa(13577,13744,122,13812);else if((v|0)==59)Oa(13577,13744,122,13812)}else v=60;while(0);if((v|0)==60?(t|0)==0:0)return;Pq(k[r+-4>>2]|0);return}if((q|0)<=0)return;h=k[b>>2]|0;g=k[a+8>>2]|0;c=(g|0)>-1;f=k[a+4>>2]|0;g=(g|0)==(m|0);e=(m|0)>0;if((m|0)>-1){if(c){c=0;while(1){b=o+(c<<3)|0;y=k[h+(c<<2)>>2]|0;a=n+(y<<3)|0;if(!((y|0)>-1&(f|0)>(y|0))){v=67;break}if(!g){v=69;break}if(e){d=0;do{y=a+((aa(d,f)|0)<<3)|0;w=b+((aa(d,j)|0)<<3)|0;p[y>>3]=+p[w>>3];d=d+1|0}while((d|0)!=(m|0))}c=c+1|0;if((c|0)>=(q|0)){v=71;break}}if((v|0)==67)Oa(13577,13744,122,13812);else if((v|0)==69)Oa(14445,14320,257,12780);else if((v|0)==71)return}else l=0;while(1){d=o+(l<<3)|0;c=k[h+(l<<2)>>2]|0;if(n+(c<<3)|0){v=65;break}if(!((c|0)>-1&(f|0)>(c|0))){v=67;break}if(!g){v=69;break}if(e){c=0;do{y=0+((aa(c,f)|0)<<3)|0;w=d+((aa(c,j)|0)<<3)|0;p[y>>3]=+p[w>>3];c=c+1|0}while((c|0)!=(m|0))}l=l+1|0;if((l|0)>=(q|0)){v=71;break}}if((v|0)==65)Oa(13818,13988,175,14058);else if((v|0)==67)Oa(13577,13744,122,13812);else if((v|0)==69)Oa(14445,14320,257,12780);else if((v|0)==71)return}else{if(c){c=0;while(1){if(o+(c<<3)|0){v=63;break}y=k[h+(c<<2)>>2]|0;if(!((y|0)>-1&(f|0)>(y|0))){v=67;break}if(!g){v=69;break}c=c+1|0;if((c|0)>=(q|0)){v=71;break}}if((v|0)==63)Oa(13818,13988,175,14058);else if((v|0)==67)Oa(13577,13744,122,13812);else if((v|0)==69)Oa(14445,14320,257,12780);else if((v|0)==71)return}else d=0;while(1){if(o+(d<<3)|0){v=63;break}c=k[h+(d<<2)>>2]|0;if(n+(c<<3)|0){v=65;break}if(!((c|0)>-1&(f|0)>(c|0))){v=67;break}if(!g){v=69;break}d=d+1|0;if((d|0)>=(q|0)){v=71;break}}if((v|0)==63)Oa(13818,13988,175,14058);else if((v|0)==65)Oa(13818,13988,175,14058);else if((v|0)==67)Oa(13577,13744,122,13812);else if((v|0)==69)Oa(14445,14320,257,12780);else if((v|0)==71)return}} -function fn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,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.0,Ga=0,Ha=0.0,Ia=0,Ja=0.0,Ka=0,La=0.0,Ma=0.0,Na=0.0,Pa=0.0,Qa=0,Ra=0,Sa=0,Ta=0;Da=u;u=u+352|0;Ca=Da+152|0;$=Da+136|0;ba=Da+120|0;S=Da+88|0;V=Da+72|0;U=Da+56|0;Y=Da+40|0;ca=Da+340|0;da=((c|0)/2|0)<<1;ea=((b|0)/2|0)<<1;if((a|0)<=0){u=Da;return}fa=(b|0)>1;ga=f+((aa(b+-1|0,g)|0)<<4)|0;ha=aa(ea,i)|0;ia=c-da|0;ja=d+((aa(da,e)|0)<<4)|0;ka=da|1;la=d+((aa(ka,e)|0)<<4)|0;ma=da+2|0;na=d+((aa(ma,e)|0)<<4)|0;oa=ca+4|0;W=Ca+24|0;pa=Ca+48|0;qa=Ca+56|0;_=Ca+72|0;ra=Ca+96|0;sa=Ca+104|0;T=Ca+120|0;ta=Ca+144|0;ua=Ca+152|0;va=$+8|0;wa=ba+4|0;xa=ba+8|0;ya=ba+12|0;R=S+8|0;za=ba+8|0;Q=Da+16|0;Z=Da+312+12|0;X=ba+8|0;Aa=S+8|0;Ba=(c|0)>1;O=(ea|0)>=(b|0)|(c|0)<2;P=(ia|0)<1|(b|0)<1;M=0;a:while(1){L=a-M|0;N=(L|0)<256?L:256;K=((N|0)/8|0)<<3;if(fa){r=d+(M<<4)|0;s=h+(M<<4)|0;t=(N|0)>7;H=(K|0)<(N|0);o=0;do{c=o|1;if(Ba){I=s+((aa(o,i)|0)<<4)|0;J=s+((aa(c,i)|0)<<4)|0;q=f+((aa(o,g)|0)<<4)|0;j=f+((aa(c,g)|0)<<4)|0;l=0;while(1){C=+p[q>>3];G=+p[q+8>>3];B=+p[q+16>>3];F=+p[q+24>>3];A=+p[j>>3];E=+p[j+8>>3];z=+p[j+16>>3];D=+p[j+24>>3];m=r+((aa(l,e)|0)<<4)|0;n=r+((aa(l|1,e)|0)<<4)|0;l=l+2|0;y=+p[m>>3];w=+p[m+8>>3];v=+p[n>>3];x=+p[n+8>>3];if(t){c=0;do{Ra=m+(c<<4)|0;Qa=n+(c<<4)|0;Ia=I+(c<<4)|0;Ga=Ia+8|0;Ea=J+(c<<4)|0;Ka=Ea+8|0;Ma=+p[Ra+16>>3];La=+p[Ra+24>>3];Fa=F*v+B*x+(G*y+C*w+ +p[Ga>>3]);Ha=z*v-D*x+(A*y-E*w+ +p[Ea>>3]);Ja=D*v+z*x+(E*y+A*w+ +p[Ka>>3]);Na=+p[Qa+16>>3];Pa=+p[Qa+24>>3];p[Ia>>3]=B*v-F*x+(C*y-G*w+ +p[Ia>>3]);p[Ga>>3]=Fa;p[Ea>>3]=Ha;p[Ka>>3]=Ja;Ka=Ia+16|0;Ga=Ia+24|0;Sa=Ea+16|0;Ta=Ea+24|0;y=+p[Ra+32>>3];w=+p[Ra+40>>3];Ja=F*Na+B*Pa+(G*Ma+C*La+ +p[Ga>>3]);Ha=z*Na-D*Pa+(A*Ma-E*La+ +p[Sa>>3]);Fa=D*Na+z*Pa+(E*Ma+A*La+ +p[Ta>>3]);x=+p[Qa+32>>3];v=+p[Qa+40>>3];p[Ka>>3]=B*Na-F*Pa+(C*Ma-G*La+ +p[Ka>>3]);p[Ga>>3]=Ja;p[Sa>>3]=Ha;p[Ta>>3]=Fa;Ta=Ia+32|0;Sa=Ia+40|0;Ga=Ea+32|0;Ka=Ea+40|0;Fa=+p[Ra+48>>3];Ha=+p[Ra+56>>3];Ja=F*x+B*v+(G*y+C*w+ +p[Sa>>3]);La=z*x-D*v+(A*y-E*w+ +p[Ga>>3]);Ma=D*x+z*v+(E*y+A*w+ +p[Ka>>3]);Pa=+p[Qa+48>>3];Na=+p[Qa+56>>3];p[Ta>>3]=B*x-F*v+(C*y-G*w+ +p[Ta>>3]);p[Sa>>3]=Ja;p[Ga>>3]=La;p[Ka>>3]=Ma;Ka=Ia+48|0;Ga=Ia+56|0;Sa=Ea+48|0;Ta=Ea+56|0;Ma=+p[Ra+64>>3];La=+p[Ra+72>>3];Ja=F*Pa+B*Na+(G*Fa+C*Ha+ +p[Ga>>3]);w=z*Pa-D*Na+(A*Fa-E*Ha+ +p[Sa>>3]);y=D*Pa+z*Na+(E*Fa+A*Ha+ +p[Ta>>3]);v=+p[Qa+64>>3];x=+p[Qa+72>>3];p[Ka>>3]=B*Pa-F*Na+(C*Fa-G*Ha+ +p[Ka>>3]);p[Ga>>3]=Ja;p[Sa>>3]=w;p[Ta>>3]=y;Ta=Ia+64|0;Sa=Ia+72|0;Ga=Ea+64|0;Ka=Ea+72|0;y=+p[Ra+80>>3];w=+p[Ra+88>>3];Ja=F*v+B*x+(G*Ma+C*La+ +p[Sa>>3]);Ha=z*v-D*x+(A*Ma-E*La+ +p[Ga>>3]);Fa=D*v+z*x+(E*Ma+A*La+ +p[Ka>>3]);Na=+p[Qa+80>>3];Pa=+p[Qa+88>>3];p[Ta>>3]=B*v-F*x+(C*Ma-G*La+ +p[Ta>>3]);p[Sa>>3]=Ja;p[Ga>>3]=Ha;p[Ka>>3]=Fa;Ka=Ia+80|0;Ga=Ia+88|0;Sa=Ea+80|0;Ta=Ea+88|0;Fa=+p[Ra+96>>3];Ha=+p[Ra+104>>3];Ja=F*Na+B*Pa+(G*y+C*w+ +p[Ga>>3]);La=z*Na-D*Pa+(A*y-E*w+ +p[Sa>>3]);Ma=D*Na+z*Pa+(E*y+A*w+ +p[Ta>>3]);x=+p[Qa+96>>3];v=+p[Qa+104>>3];p[Ka>>3]=B*Na-F*Pa+(C*y-G*w+ +p[Ka>>3]);p[Ga>>3]=Ja;p[Sa>>3]=La;p[Ta>>3]=Ma;Ta=Ia+96|0;Sa=Ia+104|0;Ga=Ea+96|0;Ka=Ea+104|0;Ma=+p[Ra+112>>3];La=+p[Ra+120>>3];Ja=F*x+B*v+(G*Fa+C*Ha+ +p[Sa>>3]);w=z*x-D*v+(A*Fa-E*Ha+ +p[Ga>>3]);y=D*x+z*v+(E*Fa+A*Ha+ +p[Ka>>3]);Pa=+p[Qa+112>>3];Na=+p[Qa+120>>3];p[Ta>>3]=B*x-F*v+(C*Fa-G*Ha+ +p[Ta>>3]);p[Sa>>3]=Ja;p[Ga>>3]=w;p[Ka>>3]=y;Ka=Ia+112|0;Ia=Ia+120|0;Ga=Ea+112|0;Ea=Ea+120|0;y=+p[Ra+128>>3];w=+p[Ra+136>>3];Ja=F*Pa+B*Na+(G*Ma+C*La+ +p[Ia>>3]);Ha=z*Pa-D*Na+(A*Ma-E*La+ +p[Ga>>3]);Fa=D*Pa+z*Na+(E*Ma+A*La+ +p[Ea>>3]);v=+p[Qa+128>>3];x=+p[Qa+136>>3];p[Ka>>3]=B*Pa-F*Na+(C*Ma-G*La+ +p[Ka>>3]);p[Ia>>3]=Ja;p[Ga>>3]=Ha;p[Ea>>3]=Fa;c=c+8|0}while((c|0)<(K|0))}if(H){c=K;do{Qa=I+(c<<4)|0;Ra=Qa+8|0;Sa=J+(c<<4)|0;Ta=Sa+8|0;Ka=m+(c<<4)|0;Ja=y;y=+p[Ka+16>>3];La=w;w=+p[Ka+24>>3];Ma=F*v+B*x+(G*Ja+C*La+ +p[Ra>>3]);Na=z*v-D*x+(A*Ja-E*La+ +p[Sa>>3]);Pa=D*v+z*x+(E*Ja+A*La+ +p[Ta>>3]);Ka=n+(c<<4)|0;Fa=v;v=+p[Ka+16>>3];Ha=x;x=+p[Ka+24>>3];p[Qa>>3]=B*Fa-F*Ha+(C*Ja-G*La+ +p[Qa>>3]);p[Ra>>3]=Ma;p[Sa>>3]=Na;p[Ta>>3]=Pa;c=c+1|0}while((c|0)<(N|0))}if((l|0)>=(da|0))break;else{q=q+32|0;j=j+32|0}}}o=o+2|0}while((o|0)<(ea|0))}if(!O){m=d+(M<<4)|0;n=h+(M<<4)+(ha<<4)|0;o=(N|0)>7;q=(K|0)<(N|0);j=0;l=ga;while(1){A=+p[l>>3];C=+p[l+8>>3];z=+p[l+16>>3];B=+p[l+24>>3];r=m+((aa(j,e)|0)<<4)|0;s=m+((aa(j|1,e)|0)<<4)|0;j=j+2|0;y=+p[r>>3];w=+p[r+8>>3];v=+p[s>>3];x=+p[s+8>>3];if(o){c=0;do{Ta=n+(c<<4)|0;Sa=Ta+8|0;Qa=r+(c<<4)|0;Ma=+p[Qa+16>>3];Na=+p[Qa+24>>3];Pa=B*v+z*x+(C*y+A*w+ +p[Sa>>3]);Ra=s+(c<<4)|0;La=+p[Ra+16>>3];Ja=+p[Ra+24>>3];p[Ta>>3]=z*v-B*x+(A*y-C*w+ +p[Ta>>3]);p[Sa>>3]=Pa;Sa=Ta+16|0;Ka=Ta+24|0;y=+p[Qa+32>>3];w=+p[Qa+40>>3];Pa=B*La+z*Ja+(C*Ma+A*Na+ +p[Ka>>3]);x=+p[Ra+32>>3];v=+p[Ra+40>>3];p[Sa>>3]=z*La-B*Ja+(A*Ma-C*Na+ +p[Sa>>3]);p[Ka>>3]=Pa;Ka=Ta+32|0;Sa=Ta+40|0;Pa=+p[Qa+48>>3];Na=+p[Qa+56>>3];Ma=B*x+z*v+(C*y+A*w+ +p[Sa>>3]);Ja=+p[Ra+48>>3];La=+p[Ra+56>>3];p[Ka>>3]=z*x-B*v+(A*y-C*w+ +p[Ka>>3]);p[Sa>>3]=Ma;Sa=Ta+48|0;Ka=Ta+56|0;Ma=+p[Qa+64>>3];w=+p[Qa+72>>3];y=B*Ja+z*La+(C*Pa+A*Na+ +p[Ka>>3]);v=+p[Ra+64>>3];x=+p[Ra+72>>3];p[Sa>>3]=z*Ja-B*La+(A*Pa-C*Na+ +p[Sa>>3]);p[Ka>>3]=y;Ka=Ta+64|0;Sa=Ta+72|0;y=+p[Qa+80>>3];Na=+p[Qa+88>>3];Pa=B*v+z*x+(C*Ma+A*w+ +p[Sa>>3]);La=+p[Ra+80>>3];Ja=+p[Ra+88>>3];p[Ka>>3]=z*v-B*x+(A*Ma-C*w+ +p[Ka>>3]);p[Sa>>3]=Pa;Sa=Ta+80|0;Ka=Ta+88|0;Pa=+p[Qa+96>>3];w=+p[Qa+104>>3];Ma=B*La+z*Ja+(C*y+A*Na+ +p[Ka>>3]);x=+p[Ra+96>>3];v=+p[Ra+104>>3];p[Sa>>3]=z*La-B*Ja+(A*y-C*Na+ +p[Sa>>3]);p[Ka>>3]=Ma;Ka=Ta+96|0;Sa=Ta+104|0;Ma=+p[Qa+112>>3];Na=+p[Qa+120>>3];y=B*x+z*v+(C*Pa+A*w+ +p[Sa>>3]);Ja=+p[Ra+112>>3];La=+p[Ra+120>>3];p[Ka>>3]=z*x-B*v+(A*Pa-C*w+ +p[Ka>>3]);p[Sa>>3]=y;Sa=Ta+112|0;Ta=Ta+120|0;y=+p[Qa+128>>3];w=+p[Qa+136>>3];Pa=B*Ja+z*La+(C*Ma+A*Na+ +p[Ta>>3]);v=+p[Ra+128>>3];x=+p[Ra+136>>3];p[Sa>>3]=z*Ja-B*La+(A*Ma-C*Na+ +p[Sa>>3]);p[Ta>>3]=Pa;c=c+8|0}while((c|0)<(K|0))}if(q){c=K;do{Sa=n+(c<<4)|0;Ta=Sa+8|0;Ra=r+(c<<4)|0;Ma=y;y=+p[Ra+16>>3];Na=w;w=+p[Ra+24>>3];Pa=B*v+z*x+(C*Ma+A*Na+ +p[Ta>>3]);Ra=s+(c<<4)|0;Ja=v;v=+p[Ra+16>>3];La=x;x=+p[Ra+24>>3];p[Sa>>3]=z*Ja-B*La+(A*Ma-C*Na+ +p[Sa>>3]);p[Ta>>3]=Pa;c=c+1|0}while((c|0)<(N|0))}if((j|0)>=(da|0))break;else l=l+32|0}}b:do if(!P){n=(N|0)>-1;o=ja+(M<<4)|0;q=o;r=la+(M<<4)|0;s=r;t=na+(M<<4)|0;m=(L|0)>0;l=0;while(1){switch(ia|0){case 1:{if(!n){c=25;break a}Ta=f+((aa(l,g)|0)+da<<4)|0;j=h+((aa(l,i)|0)<<4)+(M<<4)|0;k[R>>2]=k[Ta>>2];k[R+4>>2]=k[Ta+4>>2];k[R+8>>2]=k[Ta+8>>2];k[R+12>>2]=k[Ta+12>>2];if(m){c=0;do{k[Ca>>2]=k[R>>2];k[Ca+4>>2]=k[R+4>>2];k[Ca+8>>2]=k[R+8>>2];k[Ca+12>>2]=k[R+12>>2];Ta=o+(c<<4)|0;k[$>>2]=k[Ta>>2];k[$+4>>2]=k[Ta+4>>2];k[$+8>>2]=k[Ta+8>>2];k[$+12>>2]=k[Ta+12>>2];uk(ba,Ca,$);Ta=j+(c<<4)|0;p[Ta>>3]=+p[ba>>3]+ +p[Ta>>3];Ta=j+(c<<4)+8|0;p[Ta>>3]=+p[za>>3]+ +p[Ta>>3];c=c+1|0}while((c|0)!=(N|0))}break}case 2:{c=aa(l,g)|0;if(!n){c=30;break a}Ta=f+(c+da<<4)|0;k[V>>2]=k[Ta>>2];k[V+4>>2]=k[Ta+4>>2];k[V+8>>2]=k[Ta+8>>2];k[V+12>>2]=k[Ta+12>>2];Ta=f+(c+ka<<4)|0;j=h+((aa(l,i)|0)<<4)+(M<<4)|0;k[Q>>2]=k[V>>2];k[Q+4>>2]=k[V+4>>2];k[Q+8>>2]=k[V+8>>2];k[Q+12>>2]=k[V+12>>2];k[Z>>2]=k[Ta>>2];k[Z+4>>2]=k[Ta+4>>2];k[Z+8>>2]=k[Ta+8>>2];k[Z+12>>2]=k[Ta+12>>2];if(m){c=0;do{k[Ca>>2]=k[Q>>2];k[Ca+4>>2]=k[Q+4>>2];k[Ca+8>>2]=k[Q+8>>2];k[Ca+12>>2]=k[Q+12>>2];Ta=o+(c<<4)|0;k[$>>2]=k[Ta>>2];k[$+4>>2]=k[Ta+4>>2];k[$+8>>2]=k[Ta+8>>2];k[$+12>>2]=k[Ta+12>>2];uk(ba,Ca,$);k[Ca>>2]=k[Z>>2];k[Ca+4>>2]=k[Z+4>>2];k[Ca+8>>2]=k[Z+8>>2];k[Ca+12>>2]=k[Z+12>>2];Ta=r+(c<<4)|0;k[$>>2]=k[Ta>>2];k[$+4>>2]=k[Ta+4>>2];k[$+8>>2]=k[Ta+8>>2];k[$+12>>2]=k[Ta+12>>2];uk(S,Ca,$);Pa=+p[X>>3]+ +p[Aa>>3];Ta=j+(c<<4)|0;p[Ta>>3]=+p[ba>>3]+ +p[S>>3]+ +p[Ta>>3];Ta=j+(c<<4)+8|0;p[Ta>>3]=Pa+ +p[Ta>>3];c=c+1|0}while((c|0)!=(N|0))}break}default:{c=aa(l,g)|0;if(!n){c=35;break a}Sa=f+(c+da<<4)|0;k[U>>2]=k[Sa>>2];k[U+4>>2]=k[Sa+4>>2];k[U+8>>2]=k[Sa+8>>2];k[U+12>>2]=k[Sa+12>>2];Sa=f+(c+ka<<4)|0;k[Y>>2]=k[Sa>>2];k[Y+4>>2]=k[Sa+4>>2];k[Y+8>>2]=k[Sa+8>>2];k[Y+12>>2]=k[Sa+12>>2];Sa=f+(c+ma<<4)|0;Ta=h+((aa(l,i)|0)<<4)+(M<<4)|0;k[ca>>2]=Ta;k[oa>>2]=N;k[W>>2]=k[U>>2];k[W+4>>2]=k[U+4>>2];k[W+8>>2]=k[U+8>>2];k[W+12>>2]=k[U+12>>2];k[pa>>2]=q;k[qa>>2]=N;k[_>>2]=k[Y>>2];k[_+4>>2]=k[Y+4>>2];k[_+8>>2]=k[Y+8>>2];k[_+12>>2]=k[Y+12>>2];k[ra>>2]=s;k[sa>>2]=N;k[T>>2]=k[Sa>>2];k[T+4>>2]=k[Sa+4>>2];k[T+8>>2]=k[Sa+8>>2];k[T+12>>2]=k[Sa+12>>2];k[ta>>2]=t;k[ua>>2]=N;k[$>>2]=Ta;k[va>>2]=N;k[ba>>2]=$;k[wa>>2]=Ca;k[xa>>2]=S;k[ya>>2]=ca;qn(ba)}}l=l+1|0;if((l|0)>=(b|0))break b}}while(0);M=M+256|0;if((M|0)>=(a|0)){c=3;break}}if((c|0)==3){u=Da;return}else if((c|0)==25)Oa(14697,13988,163,14058);else if((c|0)==30)Oa(14697,13988,163,14058);else if((c|0)==35)Oa(14697,13988,163,14058)}function gn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,v=0.0,w=0.0,x=0;r=u;u=u+64|0;o=r+48|0;q=r+32|0;m=r+16|0;n=r;a=j+i|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[h+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);c=k[h>>2]|0;a=k[c+(a<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[b+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);l=k[b>>2]|0;h=l+(a<<4)|0;k[o>>2]=k[h>>2];k[o+4>>2]=k[h+4>>2];k[o+8>>2]=k[h+8>>2];k[o+12>>2]=k[h+12>>2];h=aa(j,f)|0;h=j+1+h+(k[e>>2]|0)|0;k[e>>2]=h;h=(k[d>>2]|0)+(h<<4)|0;d=c+(i<<2)+(j<<2)|0;c=d+4|0;a:do if((g|0)>1){f=n+8|0;i=n+8|0;a=0;while(1){e=d+8|0;j=k[c>>2]|0;c=k[e>>2]|0;x=h+16|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];h=h+32|0;k[m>>2]=k[x>>2];k[m+4>>2]=k[x+4>>2];k[m+8>>2]=k[x+8>>2];k[m+12>>2]=k[x+12>>2];w=+p[l+(j<<4)>>3];v=+p[l+(j<<4)+8>>3];t=+p[l+(c<<4)>>3];s=+p[l+(c<<4)+8>>3];uk(n,o,q);w=w-+p[n>>3];v=v-+p[f>>3];uk(n,o,m);t=t-+p[n>>3];s=s-+p[i>>3];l=k[b>>2]|0;p[l+(j<<4)>>3]=w;p[l+(j<<4)+8>>3]=v;j=k[b>>2]|0;p[j+(c<<4)>>3]=t;p[j+(c<<4)+8>>3]=s;a=a+2|0;c=d+12|0;if((a|1|0)>=(g|0))break a;d=e;l=k[b>>2]|0}}else a=0;while(0);if((a|0)>=(g|0)){u=r;return}uk(q,o,h);x=k[c>>2]|0;g=k[b>>2]|0;b=g+(x<<4)|0;p[b>>3]=+p[b>>3]-+p[q>>3];x=g+(x<<4)+8|0;p[x>>3]=+p[x>>3]-+p[q+8>>3];u=r;return}function hn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+32|0;l=v+16|0;m=v;n=j+i|0;q=h+4|0;t=b+4|0;r=c+4|0;if(!((n|0)>-1?(k[q>>2]|0)>(n|0):0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(n<<2)>>2]|0;if(!((i|0)>-1?(k[t>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);if((k[r>>2]|0)<=0)Oa(16605,15693,425,29764);s=(k[b>>2]|0)+(i<<4)|0;o=k[c>>2]|0;k[o>>2]=k[s>>2];k[o+4>>2]=k[s+4>>2];k[o+8>>2]=k[s+8>>2];k[o+12>>2]=k[s+12>>2];o=n+1|0;if((k[q>>2]|0)<=(o|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(o<<2)>>2]|0;if(!((i|0)>-1?(k[t>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);if((k[r>>2]|0)<=1)Oa(16605,15693,425,29764);s=(k[b>>2]|0)+(i<<4)|0;i=(k[c>>2]|0)+16|0;k[i>>2]=k[s>>2];k[i+4>>2]=k[s+4>>2];k[i+8>>2]=k[s+8>>2];k[i+12>>2]=k[s+12>>2];i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);if((a|0)!=2)Oa(14066,14080,110,14157);a=k[c>>2]|0;i=i+16|0;k[l>>2]=k[i>>2];k[l+4>>2]=k[i+4>>2];k[l+8>>2]=k[i+8>>2];k[l+12>>2]=k[i+12>>2];uk(m,l,a);i=a+16|0;p[i>>3]=+p[i>>3]-+p[m>>3];i=a+24|0;p[i>>3]=+p[i>>3]-+p[m+8>>3];i=(k[e>>2]|0)+2|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;j=(g|0)>-1;if(!(j|(i|0)==0))Oa(13818,13988,175,14058);s=(k[c>>2]|0)+32|0;if(!j)Oa(19264,19297,66,19366);if(g|0)iF(s|0,0,g<<4|0)|0;fn(g,1,2,i,f,a,2,s,g);if((k[q>>2]|0)<=(n|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(n<<2)>>2]|0;if((k[r>>2]|0)<=0)Oa(16605,15693,425,29764);if(!((i|0)>-1?(k[t>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);f=k[c>>2]|0;j=(k[b>>2]|0)+(i<<4)|0;k[j>>2]=k[f>>2];k[j+4>>2]=k[f+4>>2];k[j+8>>2]=k[f+8>>2];k[j+12>>2]=k[f+12>>2];j=n+2|0;if((k[q>>2]|0)<=(o|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(o<<2)>>2]|0;if((k[r>>2]|0)<=1)Oa(16605,15693,425,29764);if(!((i|0)>-1?(k[t>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);r=(k[c>>2]|0)+16|0;c=(k[b>>2]|0)+(i<<4)|0;k[c>>2]=k[r>>2];k[c+4>>2]=k[r+4>>2];k[c+8>>2]=k[r+8>>2];k[c+12>>2]=k[r+12>>2];if((g|0)<=0){u=v;return}o=k[q>>2]|0;n=k[h>>2]|0;e=k[t>>2]|0;m=k[b>>2]|0;d=(j|0)>-1;i=j;j=0;while(1){if(!(d&(o|0)>(i|0))){i=26;break}a=k[n+(i<<2)>>2]|0;l=s+(j<<4)|0;if(!((a|0)>-1&(e|0)>(a|0))){i=28;break}b=m+(a<<4)|0;p[b>>3]=+p[b>>3]-+p[l>>3];b=m+(a<<4)+8|0;p[b>>3]=+p[b>>3]-+p[l+8>>3];j=j+1|0;if((j|0)>=(g|0)){i=30;break}else i=i+1|0}if((i|0)==26)Oa(16605,15693,425,29764);else if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30){u=v;return}}function jn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+48|0;q=x+24|0;l=x+16|0;m=x;r=j+i|0;t=h+4|0;w=b+4|0;v=c+4|0;if(!((r|0)>-1?(k[t>>2]|0)>(r|0):0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(r<<2)>>2]|0;if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);if((k[v>>2]|0)<=0)Oa(16605,15693,425,29764);s=(k[b>>2]|0)+(i<<4)|0;n=k[c>>2]|0;k[n>>2]=k[s>>2];k[n+4>>2]=k[s+4>>2];k[n+8>>2]=k[s+8>>2];k[n+12>>2]=k[s+12>>2];n=r+1|0;if((k[t>>2]|0)<=(n|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(n<<2)>>2]|0;if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);if((k[v>>2]|0)<=1)Oa(16605,15693,425,29764);s=(k[b>>2]|0)+(i<<4)|0;o=(k[c>>2]|0)+16|0;k[o>>2]=k[s>>2];k[o+4>>2]=k[s+4>>2];k[o+8>>2]=k[s+8>>2];k[o+12>>2]=k[s+12>>2];o=r+2|0;if((k[t>>2]|0)<=(o|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(o<<2)>>2]|0;if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);if((k[v>>2]|0)<=2)Oa(16605,15693,425,29764);s=(k[b>>2]|0)+(i<<4)|0;i=(k[c>>2]|0)+32|0;k[i>>2]=k[s>>2];k[i+4>>2]=k[s+4>>2];k[i+8>>2]=k[s+8>>2];k[i+12>>2]=k[s+12>>2];i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;if((f|0)<=-1)Oa(19264,19297,66,19366);if((a|0)!=3)Oa(14066,14080,110,14157);i=(k[d>>2]|0)+(i<<4)|0;k[q>>2]=k[c>>2];k[m>>2]=i;k[m+8>>2]=f;k[l>>2]=m;k[l+4>>2]=q;rn(q,l,x+32|0);i=(k[e>>2]|0)+3|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;j=(g|0)>-1;if(!(j|(i|0)==0))Oa(13818,13988,175,14058);s=(k[c>>2]|0)+48|0;if(!j)Oa(19264,19297,66,19366);if(g|0)iF(s|0,0,g<<4|0)|0;fn(g,1,3,i,f,k[q>>2]|0,3,s,g);if((k[t>>2]|0)<=(r|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(r<<2)>>2]|0;if((k[v>>2]|0)<=0)Oa(16605,15693,425,29764);if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);q=k[c>>2]|0;f=(k[b>>2]|0)+(i<<4)|0;k[f>>2]=k[q>>2];k[f+4>>2]=k[q+4>>2];k[f+8>>2]=k[q+8>>2];k[f+12>>2]=k[q+12>>2];if((k[t>>2]|0)<=(n|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(n<<2)>>2]|0;if((k[v>>2]|0)<=1)Oa(16605,15693,425,29764);if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);f=(k[c>>2]|0)+16|0;j=(k[b>>2]|0)+(i<<4)|0;k[j>>2]=k[f>>2];k[j+4>>2]=k[f+4>>2];k[j+8>>2]=k[f+8>>2];k[j+12>>2]=k[f+12>>2];j=r+3|0;if((k[t>>2]|0)<=(o|0))Oa(16605,15693,425,29764);i=k[(k[h>>2]|0)+(o<<2)>>2]|0;if((k[v>>2]|0)<=2)Oa(16605,15693,425,29764);if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0))Oa(16605,15693,425,29764);v=(k[c>>2]|0)+32|0;c=(k[b>>2]|0)+(i<<4)|0;k[c>>2]=k[v>>2];k[c+4>>2]=k[v+4>>2];k[c+8>>2]=k[v+8>>2];k[c+12>>2]=k[v+12>>2];if((g|0)<=0){u=x;return}o=k[t>>2]|0;n=k[h>>2]|0;e=k[w>>2]|0;m=k[b>>2]|0;d=(j|0)>-1;i=j;j=0;while(1){if(!(d&(o|0)>(i|0))){i=26;break}a=k[n+(i<<2)>>2]|0;l=s+(j<<4)|0;if(!((a|0)>-1&(e|0)>(a|0))){i=28;break}b=m+(a<<4)|0;p[b>>3]=+p[b>>3]-+p[l>>3];b=m+(a<<4)+8|0;p[b>>3]=+p[b>>3]-+p[l+8>>3];j=j+1|0;if((j|0)>=(g|0)){i=30;break}else i=i+1|0}if((i|0)==26)Oa(16605,15693,425,29764);else if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30){u=x;return}}function kn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+48|0;t=A+44|0;y=A+32|0;v=A+24|0;w=A;z=j+i|0;x=(a|0)>0;a:do if(x){n=h+4|0;o=b+4|0;q=c+4|0;r=(z|0)>-1;i=z;m=0;while(1){if(!(r&(k[n>>2]|0)>(i|0))){i=4;break}s=k[(k[h>>2]|0)+(i<<2)>>2]|0;if(!((s|0)>-1?(k[o>>2]|0)>(s|0):0)){i=6;break}if((k[q>>2]|0)<=(m|0)){i=8;break}B=(k[b>>2]|0)+(s<<4)|0;s=(k[c>>2]|0)+(m<<4)|0;k[s>>2]=k[B>>2];k[s+4>>2]=k[B+4>>2];k[s+8>>2]=k[B+8>>2];k[s+12>>2]=k[B+12>>2];m=m+1|0;if((m|0)>=(a|0))break a;else i=i+1|0}if((i|0)==4)Oa(16605,15693,425,29764);else if((i|0)==6)Oa(16605,15693,425,29764);else if((i|0)==8)Oa(16605,15693,425,29764)}while(0);i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);m=(a|0)>-1;if(!(m|(i|0)==0))Oa(13818,13988,175,14058);k[y>>2]=k[c>>2];n=y+4|0;k[n>>2]=a;if(!m)Oa(14697,13988,163,14058);k[w>>2]=i;k[w+4>>2]=a;k[w+8>>2]=a;k[w+12>>2]=f;k[v>>2]=w;k[v+4>>2]=y;sn(y,v,t);i=(k[e>>2]|0)+a|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;if(!((g|a|0)>-1|(i|0)==0))Oa(13818,13988,175,14058);t=(k[c>>2]|0)+(a<<4)|0;if((g|0)<=-1)Oa(19264,19297,66,19366);if(g|0)iF(t|0,0,g<<4|0)|0;fn(g,1,a,i,f,k[y>>2]|0,k[n>>2]|0,t,g);b:do if(x){o=h+4|0;q=c+4|0;r=b+4|0;s=(z|0)>-1;i=z;m=0;while(1){n=i+1|0;if(!(s&(k[o>>2]|0)>(i|0))){i=27;break}i=k[(k[h>>2]|0)+(i<<2)>>2]|0;if((k[q>>2]|0)<=(m|0)){i=29;break}if(!((i|0)>-1?(k[r>>2]|0)>(i|0):0)){i=31;break}z=(k[c>>2]|0)+(m<<4)|0;B=(k[b>>2]|0)+(i<<4)|0;k[B>>2]=k[z>>2];k[B+4>>2]=k[z+4>>2];k[B+8>>2]=k[z+8>>2];k[B+12>>2]=k[z+12>>2];m=m+1|0;if((m|0)>=(a|0)){l=n;break b}else i=n}if((i|0)==27)Oa(16605,15693,425,29764);else if((i|0)==29)Oa(16605,15693,425,29764);else if((i|0)==31)Oa(16605,15693,425,29764)}else l=z;while(0);if((g|0)<=0){u=A;return}j=k[h+4>>2]|0;r=k[h>>2]|0;s=k[b+4>>2]|0;o=k[b>>2]|0;q=(l|0)>-1;i=0;while(1){if(!(q&(j|0)>(l|0))){i=34;break}m=k[r+(l<<2)>>2]|0;n=t+(i<<4)|0;if(!((m|0)>-1&(s|0)>(m|0))){i=36;break}B=o+(m<<4)|0;p[B>>3]=+p[B>>3]-+p[n>>3];B=o+(m<<4)+8|0;p[B>>3]=+p[B>>3]-+p[n+8>>3];i=i+1|0;if((i|0)>=(g|0)){i=38;break}else l=l+1|0}if((i|0)==34)Oa(16605,15693,425,29764);else if((i|0)==36)Oa(16605,15693,425,29764);else if((i|0)==38){u=A;return}}function ln(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=k[b>>2]|0;e=k[b+4>>2]|0;d=k[e+8>>2]|0;j=a+4|0;c=k[j>>2]|0;if((c|0)!=(k[n+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(d|0)?(k[a+8>>2]|0)!=(d|0):0)Oa(14445,14320,257,12780);l=k[a>>2]|0;m=k[e>>2]|0;if((l|0)==(m|0)){b=k[e+12>>2]|0;if((k[a+12>>2]|0)!=(b|0))f=8}else{b=k[e+12>>2]|0;f=8}if((f|0)==8){if((c|0)!=(k[e+4>>2]|0))Oa(14445,14320,257,12780);i=a+8|0;if((d|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);h=k[a+12>>2]|0;if((d|0)>0){g=0;do{if((c|0)>0){e=aa(g,h)|0;f=aa(g,b)|0;d=0;do{c=l+(d+e<<4)|0;o=m+(d+f<<4)|0;k[c>>2]=k[o>>2];k[c+4>>2]=k[o+4>>2];k[c+8>>2]=k[o+8>>2];k[c+12>>2]=k[o+12>>2];d=d+1|0;c=k[j>>2]|0}while((d|0)<(c|0));d=k[i>>2]|0}g=g+1|0}while((g|0)<(d|0))}}o=k[n+8>>2]|0;if((o|0)==(c|0)?(o|0)==(k[n+4>>2]|0):0){mn(n,a);return}else Oa(19710,19864,170,18516)}function mn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;on(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;nn(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function nn(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;var h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;ga=u;u=u+96|0;W=ga+64|0;da=ga+48|0;ea=ga+82|0;fa=ga+81|0;Y=ga+80|0;Z=ga;_=ga+32|0;ba=ga+16|0;ca=k[g+16>>2]|0;X=k[g+8>>2]|0;X=(X|0)<(a|0)?X:a;h=aa(X,ca)|0;m=aa(ca,b)|0;if(h>>>0>268435455){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}j=k[g>>2]|0;l=h<<4;if(!j)do if(l>>>0>=131073){h=Oq(l+16|0)|0;j=h+16&-16;if(!h){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}k[j+-4>>2]=h;if(!j){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}else{h=k[g>>2]|0;break}}else{j=u;u=u+((1*(l|15)|0)+15&-16)|0;j=j+15&-16;h=0}while(0);else h=j;V=(h|0)==0?j:0;U=l>>>0>131072;if(m>>>0>268435455){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}g=g+4|0;l=k[g>>2]|0;m=m<<4;if(!l)do if(m>>>0>=131073){h=Oq(m+16|0)|0;l=h+16&-16;if(!h){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}k[l+-4>>2]=h;if(!l){ga=Kb(4)|0;cF(ga);Cc(ga|0,2032,79)}else{h=k[g>>2]|0;break}}else{l=u;u=u+((1*(m|15)|0)+15&-16)|0;l=l+15&-16;h=0}while(0);else h=l;T=(h|0)==0?l:0;R=m>>>0>131072;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}S=(b|0)>0;if(S)h=((((k[7995]|0)>>>0)/(((f|0)<(a|0)?a:f)<<6>>>0)|0|0)/4|0)<<2;else h=0;H=(h|0)>4?h:4;a:do if((a|0)>0){I=W+4|0;J=da+4|0;K=ba+8|0;L=da+8|0;M=W+8|0;N=W+4|0;O=W+4|0;P=da+4|0;Q=_+8|0;F=0;do{G=a-F|0;G=(ca|0)<(G|0)?ca:G;if(S){z=(G|0)>0;v=0;do{y=b-v|0;y=(H|0)<(y|0)?H:y;if(z){A=y+v|0;B=(y|0)>0;C=l+((aa(v,G)|0)<<4)|0;D=aa(v,f)|0;w=0;do{s=G-w|0;x=(s|0)<4?s:4;E=w+F|0;if((s|0)>0?($=x+-1|0,B):0){r=0;do{t=r+E|0;m=$-r|0;n=t+1|0;o=c+((aa(t,d)|0)+n<<4)|0;if((m|0)>0){g=v;do{q=aa(g,f)|0;h=e+(q+t<<4)|0;p[da>>3]=1.0;p[L>>3]=0.0;uk(W,h,da);k[h>>2]=k[W>>2];k[h+4>>2]=k[W+4>>2];k[h+8>>2]=k[W+8>>2];k[h+12>>2]=k[W+12>>2];k[Z>>2]=k[h>>2];k[Z+4>>2]=k[h+4>>2];k[Z+8>>2]=k[h+8>>2];k[Z+12>>2]=k[h+12>>2];q=e+(q+n<<4)|0;h=0;do{uk(W,Z,o+(h<<4)|0);ha=q+(h<<4)|0;p[ha>>3]=+p[ha>>3]-+p[W>>3];ha=ha+8|0;p[ha>>3]=+p[ha>>3]-+p[M>>3];h=h+1|0}while((h|0)<(m|0));g=g+1|0}while((g|0)<(A|0))}else{h=v;do{ha=e+((aa(h,f)|0)+t<<4)|0;p[da>>3]=1.0;p[L>>3]=0.0;uk(W,ha,da);k[ha>>2]=k[W>>2];k[ha+4>>2]=k[W+4>>2];k[ha+8>>2]=k[W+8>>2];k[ha+12>>2]=k[W+12>>2];h=h+1|0}while((h|0)<(A|0))}r=r+1|0}while((x|0)>(r|0))}h=s-x|0;k[W>>2]=e+(E+D<<4);k[N>>2]=f;pn(Y,C,W,x,y,G,w);if((h|0)>0){ha=x+E|0;E=c+(ha+(aa(E,d)|0)<<4)|0;k[W>>2]=E;k[O>>2]=d;Ok(fa,j,W,x,h,0,0);k[da>>2]=e+(ha+D<<4);k[P>>2]=f;p[_>>3]=-1.0;p[Q>>3]=0.0;k[W>>2]=k[_>>2];k[W+4>>2]=k[_+4>>2];k[W+8>>2]=k[_+8>>2];k[W+12>>2]=k[_+12>>2];Qk(ea,da,j,C,h,x,y,W,x,G,0,w)}w=w+4|0}while((G|0)>(w|0))}v=v+H|0}while((v|0)<(b|0))}h=F;F=F+ca|0;n=(F|0)<(a|0);if(!n)break a;m=aa(h,d)|0;h=F;do{g=a-h|0;g=(g|0)<(X|0)?g:X;if((g|0)>0){k[W>>2]=c+(h+m<<4);k[I>>2]=d;Ok(fa,j,W,G,g,0,0);k[da>>2]=e+(h<<4);k[J>>2]=f;p[ba>>3]=-1.0;p[K>>3]=0.0;k[W>>2]=k[ba>>2];k[W+4>>2]=k[ba+4>>2];k[W+8>>2]=k[ba+8>>2];k[W+12>>2]=k[ba+12>>2];Qk(ea,da,j,l,g,G,b,W,-1,-1,0,0)}h=h+X|0}while((h|0)<(a|0))}while(n)}while(0);if(!((T|0)==0|R^1))Pq(k[T+-4>>2]|0);if((V|0)==0|U^1){u=ga;return}Pq(k[V+-4>>2]|0);u=ga;return}function on(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,j=0,l=0,m=0,n=0,o=0;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}m=k[7994]|0;o=k[7995]|0;n=k[7996]|0;if((d|0)>1){f=(m+-64|0)/320|0;f=(f|0)<320?f:320;e=k[a>>2]|0;if((f|0)<(e|0)){e=f-((f|0)%8|0)|0;k[a>>2]=e}e=((o-m|0)>>>0)/(e<<6>>>0)|0;f=k[c>>2]|0;h=d+-1|0;g=(h+f|0)/(d|0)|0;if((e|0)>(g|0)){e=g+3|0;e=e-((e|0)%4|0)|0;e=(e|0)<(f|0)?e:f}else e=e-((e|0)%4|0)|0;k[c>>2]=e;if((n|0)<=(o|0))return;f=((n-o|0)>>>0)/((aa(d<<4,k[a>>2]|0)|0)>>>0)|0;g=k[b>>2]|0;e=(h+g|0)/(d|0)|0;if((f|0)>0&(f|0)<(e|0)){k[b>>2]=f;return}else{k[b>>2]=(e|0)<(g|0)?e:g;return}}e=k[b>>2]|0;f=k[c>>2]|0;j=(e|0)<(f|0)?f:e;l=k[a>>2]|0;if((((l|0)<(j|0)?j:l)|0)<48)return;d=m+-64|0;j=((d|0)/320|0)&-8;j=(j|0)>1?j:1;if((l|0)>(j|0)){e=(l|0)%(j|0)|0;if(!e)e=j;else e=j-(((j+-1-e|0)/((((l|0)/(j|0)|0)<<3)+8|0)|0)<<3)|0;k[a>>2]=e;a=k[b>>2]|0;g=e;h=k[c>>2]|0}else{a=e;g=l;h=f}d=d-(aa(a<<4,g)|0)|0;e=(d|0)<(g<<6|0);j=((e?4718592:d)>>>0)/((e?j<<6:g<<4)>>>0)|0;e=1572864/(g<<5>>>0)|0;e=((j|0)<(e|0)?j:e)&-4;if((h|0)>(e|0)){f=(h|0)%(e|0)|0;if(f)e=e-(((e-f|0)/((((h|0)/(e|0)|0)<<2)+4|0)|0)<<2)|0;k[c>>2]=e;return}if((l|0)!=(g|0))return;e=aa(l<<4,h)|0;if((e|0)<1025){f=a;e=m}else{e=(n|0)!=0&(e|0)<32769;f=e?((a|0)<576?a:576):a;e=e?o:1572864}e=(e>>>0)/((l*48|0)>>>0)|0;e=(f|0)<(e|0)?f:e;if(!e)return;f=(a|0)%(e|0)|0;if(f)e=e-((e-f|0)/(((a|0)/(e|0)|0)+1|0)|0)|0;k[b>>2]=e;return}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|0;var h=0,i=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;if((f|0)<(d|0)|(f|0)<(g|0))Oa(15454,15545,1906,29764);l=((e|0)/4|0)<<2;do if((e|0)>3){m=g<<2;n=c+4|0;o=f-d-g<<2;if((d|0)<=0){u=f<<2;a=d<<2;a=(aa((((l|0)>4?l:4)+-1|0)>>>2,u-a|0)|0)+u-a|0;break}p=m+(d<<2)|0;u=(l|0)>4?l:4;h=0;i=0;while(1){a=k[c>>2]|0;t=k[n>>2]|0;q=a+((aa(t,h)|0)<<4)|0;r=a+((aa(t,h|1)|0)<<4)|0;s=a+((aa(t,h|2)|0)<<4)|0;t=a+((aa(t,h|3)|0)<<4)|0;a=0;j=i+m|0;while(1){v=q+(a<<4)|0;w=b+(j<<4)|0;k[w>>2]=k[v>>2];k[w+4>>2]=k[v+4>>2];k[w+8>>2]=k[v+8>>2];k[w+12>>2]=k[v+12>>2];w=r+(a<<4)|0;v=b+(j+1<<4)|0;k[v>>2]=k[w>>2];k[v+4>>2]=k[w+4>>2];k[v+8>>2]=k[w+8>>2];k[v+12>>2]=k[w+12>>2];v=s+(a<<4)|0;w=b+(j+2<<4)|0;k[w>>2]=k[v>>2];k[w+4>>2]=k[v+4>>2];k[w+8>>2]=k[v+8>>2];k[w+12>>2]=k[v+12>>2];w=t+(a<<4)|0;v=b+(j+3<<4)|0;k[v>>2]=k[w>>2];k[v+4>>2]=k[w+4>>2];k[v+8>>2]=k[w+8>>2];k[v+12>>2]=k[w+12>>2];a=a+1|0;if((a|0)==(d|0))break;else j=j+4|0}h=h+4|0;if((h|0)>=(l|0))break;else i=p+i+o|0}a=aa(u,f)|0}else a=0;while(0);if((l|0)>=(e|0))return;m=c+4|0;if((d|0)<=0)return;while(1){j=(k[c>>2]|0)+((aa(k[m>>2]|0,l)|0)<<4)|0;h=0;i=a+g|0;while(1){v=j+(h<<4)|0;w=b+(i<<4)|0;k[w>>2]=k[v>>2];k[w+4>>2]=k[v+4>>2];k[w+8>>2]=k[v+8>>2];k[w+12>>2]=k[v+12>>2];h=h+1|0;if((h|0)==(d|0))break;else i=i+1|0}l=l+1|0;if((l|0)==(e|0))break;else a=a+f|0}return}function qn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,r=0.0,s=0;m=u;u=u+64|0;d=m+48|0;h=m+32|0;i=m+16|0;j=m;l=k[(k[a+12>>2]|0)+4>>2]|0;if((l|0)<=0){u=m;return}e=a+4|0;c=i+8|0;f=j+8|0;g=i+8|0;b=0;do{n=k[k[a>>2]>>2]|0;q=k[e>>2]|0;s=q+24|0;k[d>>2]=k[s>>2];k[d+4>>2]=k[s+4>>2];k[d+8>>2]=k[s+8>>2];k[d+12>>2]=k[s+12>>2];s=(k[q+48>>2]|0)+(b<<4)|0;k[h>>2]=k[s>>2];k[h+4>>2]=k[s+4>>2];k[h+8>>2]=k[s+8>>2];k[h+12>>2]=k[s+12>>2];uk(i,d,h);s=q+72|0;k[d>>2]=k[s>>2];k[d+4>>2]=k[s+4>>2];k[d+8>>2]=k[s+8>>2];k[d+12>>2]=k[s+12>>2];s=(k[q+96>>2]|0)+(b<<4)|0;k[h>>2]=k[s>>2];k[h+4>>2]=k[s+4>>2];k[h+8>>2]=k[s+8>>2];k[h+12>>2]=k[s+12>>2];uk(j,d,h);r=+p[i>>3]+ +p[j>>3];o=+p[c>>3]+ +p[f>>3];s=q+120|0;k[d>>2]=k[s>>2];k[d+4>>2]=k[s+4>>2];k[d+8>>2]=k[s+8>>2];k[d+12>>2]=k[s+12>>2];q=(k[q+144>>2]|0)+(b<<4)|0;k[h>>2]=k[q>>2];k[h+4>>2]=k[q+4>>2];k[h+8>>2]=k[q+8>>2];k[h+12>>2]=k[q+12>>2];uk(i,d,h);o=o+ +p[g>>3];q=n+(b<<4)|0;p[q>>3]=r+ +p[i>>3]+ +p[q>>3];n=n+(b<<4)+8|0;p[n>>3]=o+ +p[n>>3];b=b+1|0}while((b|0)!=(l|0));u=m;return}function rn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0;h=u;u=u+48|0;d=h+32|0;e=h+16|0;f=h;g=k[b>>2]|0;c=k[a>>2]|0;b=k[k[b+4>>2]>>2]|0;if((c|0)!=(b|0)){k[c>>2]=k[b>>2];k[c+4>>2]=k[b+4>>2];k[c+8>>2]=k[b+8>>2];k[c+12>>2]=k[b+12>>2];i=c+16|0;j=b+16|0;k[i>>2]=k[j>>2];k[i+4>>2]=k[j+4>>2];k[i+8>>2]=k[j+8>>2];k[i+12>>2]=k[j+12>>2];c=c+32|0;b=b+32|0;k[c>>2]=k[b>>2];k[c+4>>2]=k[b+4>>2];k[c+8>>2]=k[b+8>>2];k[c+12>>2]=k[b+12>>2];c=k[a>>2]|0}j=(k[g>>2]|0)+16|0;k[d>>2]=k[j>>2];k[d+4>>2]=k[j+4>>2];k[d+8>>2]=k[j+8>>2];k[d+12>>2]=k[j+12>>2];uk(e,d,c);j=k[a>>2]|0;b=j+16|0;p[b>>3]=+p[b>>3]-+p[e>>3];b=j+24|0;p[b>>3]=+p[b>>3]-+p[e+8>>3];b=(k[g>>2]|0)+32|0;i=k[g+8>>2]|0;k[d>>2]=k[b>>2];k[d+4>>2]=k[b+4>>2];k[d+8>>2]=k[b+8>>2];k[d+12>>2]=k[b+12>>2];uk(e,d,j);i=b+(i<<4)|0;k[d>>2]=k[i>>2];k[d+4>>2]=k[i+4>>2];k[d+8>>2]=k[i+8>>2];k[d+12>>2]=k[i+12>>2];uk(f,d,j+16|0);l=+p[e+8>>3]+ +p[f+8>>3];j=k[a>>2]|0;i=j+32|0;p[i>>3]=+p[i>>3]-(+p[e>>3]+ +p[f>>3]);j=j+40|0;p[j>>3]=+p[j>>3]-l;u=h;return}function sn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=k[b>>2]|0;g=a+4|0;e=k[g>>2]|0;if((e|0)!=(k[f+8>>2]|0))Oa(14445,14320,257,12780);c=k[b+4>>2]|0;b=k[a>>2]|0;d=k[c>>2]|0;c=k[c+4>>2]|0;if(!((b|0)==(d|0)&(e|0)==(c|0))){if((e|0)!=(c|0))Oa(14445,14320,257,12780);if((e|0)>0){c=0;do{h=b+(c<<4)|0;i=d+(c<<4)|0;k[h>>2]=k[i>>2];k[h+4>>2]=k[i+4>>2];k[h+8>>2]=k[i+8>>2];k[h+12>>2]=k[i+12>>2];c=c+1|0}while((c|0)!=(e|0))}}c=k[f+8>>2]|0;if((c|0)!=(k[f+4>>2]|0))Oa(19710,19864,170,18516);if((c|0)==(k[g>>2]|0)){tn(f,a);return}else Oa(19710,19864,170,18516)}function tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=u;c=k[b+4>>2]|0;if(c>>>0>268435455){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}d=k[b>>2]|0;e=c<<4;if(!d)do if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d+-4>>2]=c;if(!d){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else{c=k[b>>2]|0;break}}else{d=u;u=u+((1*(e|15)|0)+15&-16)|0;d=d+15&-16;c=0}while(0);else c=d;c=(c|0)==0?d:0;un(k[a+8>>2]|0,k[a>>2]|0,k[a+12>>2]|0,d);if((c|0)==0|e>>>0>131072^1){u=f;return}Pq(k[c+-4>>2]|0);u=f;return}function un(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+128|0;m=C+80|0;y=C+64|0;z=C+48|0;A=C;if((c|0)<=-1)Oa(19264,19297,66,19366);B=(a|0)>-1;if(!(B|(b|0)==0))Oa(13818,13988,175,14058);if((a|0)<=0){u=C;return}q=m+4|0;o=C+100+4|0;n=C+16+8|0;s=z+8|0;t=y+4|0;v=z+4|0;w=A+8|0;l=0;a:while(1){j=a-l|0;r=(j|0)<8?j:8;x=r+l|0;b:do if((j|0)>0){if(B){h=0;while(1){e=h+l|0;j=r-h|0;i=j+-1|0;f=e+1|0;if((j|0)>1){g=d+(e<<4)|0;if((e|0)>=(a|0)){e=22;break a}j=b+((aa(e,c)|0)<<4)+(f<<4)|0;if((i|f|0)<0|(a-i|0)<=(e|0)){e=24;break a};k[q>>2]=k[g>>2];k[q+4>>2]=k[g+4>>2];k[q+8>>2]=k[g+8>>2];k[q+12>>2]=k[g+12>>2];k[o>>2]=k[q>>2];k[o+4>>2]=k[q+4>>2];k[o+8>>2]=k[q+8>>2];k[o+12>>2]=k[q+12>>2];f=d+(f<<4)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];k[n+12>>2]=k[o+12>>2];e=0;do{k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];k[m+12>>2]=k[n+12>>2];g=j+(e<<4)|0;k[y>>2]=k[g>>2];k[y+4>>2]=k[g+4>>2];k[y+8>>2]=k[g+8>>2];k[y+12>>2]=k[g+12>>2];uk(z,m,y);g=f+(e<<4)|0;p[g>>3]=+p[g>>3]-+p[z>>3];g=f+(e<<4)+8|0;p[g>>3]=+p[g>>3]-+p[s>>3];e=e+1|0}while((e|0)!=(i|0))}h=h+1|0;if((r|0)<=(h|0))break b}}else h=0;do{e=h+l|0;j=r-h|0;i=j+-1|0;f=e+1|0;if((j|0)>1){g=d+(e<<4)|0;if(b+((aa(e,c)|0)<<4)|0){e=20;break a}if((e|0)>=(a|0)){e=22;break a}j=0+(f<<4)|0;if((i|f|0)<0|(a-i|0)<=(e|0)){e=24;break a};k[q>>2]=k[g>>2];k[q+4>>2]=k[g+4>>2];k[q+8>>2]=k[g+8>>2];k[q+12>>2]=k[g+12>>2];k[o>>2]=k[q>>2];k[o+4>>2]=k[q+4>>2];k[o+8>>2]=k[q+8>>2];k[o+12>>2]=k[q+12>>2];f=d+(f<<4)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];k[n+12>>2]=k[o+12>>2];e=0;do{k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];k[m+12>>2]=k[n+12>>2];g=j+(e<<4)|0;k[y>>2]=k[g>>2];k[y+4>>2]=k[g+4>>2];k[y+8>>2]=k[g+8>>2];k[y+12>>2]=k[g+12>>2];uk(z,m,y);g=f+(e<<4)|0;p[g>>3]=+p[g>>3]-+p[z>>3];g=f+(e<<4)+8|0;p[g>>3]=+p[g>>3]-+p[s>>3];e=e+1|0}while((e|0)!=(i|0))}h=h+1|0}while((r|0)>(h|0))}while(0);e=a-x|0;if((e|0)>0){j=b+(x+(aa(l,c)|0)<<4)|0;k[y>>2]=j;k[t>>2]=c;k[z>>2]=d+(l<<4);k[v>>2]=1;p[A>>3]=-1.0;p[w>>3]=0.0;k[m>>2]=k[A>>2];k[m+4>>2]=k[A+4>>2];k[m+8>>2]=k[A+8>>2];k[m+12>>2]=k[A+12>>2];vn(e,r,y,z,d+(x<<4)|0,1,m)}l=l+8|0;if((l|0)>=(a|0)){e=7;break}}if((e|0)==7){u=C;return}else if((e|0)==20)Oa(13818,13988,175,14058);else if((e|0)==22)Oa(13577,13744,122,13812);else if((e|0)==24)Oa(14177,13744,147,13812)}function vn(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;var h=0,i=0.0,j=0.0,l=0,m=0,n=0.0,o=0.0,q=0.0,r=0,s=0.0,t=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0;F=u;u=u+16|0;E=F;D=c+4|0;f=((b|0)/4|0)<<2;if((b|0)>3){w=E+8|0;t=E+8|0;r=E+8|0;m=E+8|0;y=(a|0)>0;l=0;do{uk(E,g,(k[d>>2]|0)+(l<<4)|0);o=+p[E>>3];x=+p[w>>3];A=l|1;uk(E,g,(k[d>>2]|0)+(A<<4)|0);n=+p[E>>3];v=+p[t>>3];B=l|2;uk(E,g,(k[d>>2]|0)+(B<<4)|0);j=+p[E>>3];s=+p[r>>3];C=l|3;uk(E,g,(k[d>>2]|0)+(C<<4)|0);i=+p[E>>3];q=+p[m>>3];G=k[c>>2]|0;h=k[D>>2]|0;z=G+((aa(h,l)|0)<<4)|0;A=G+((aa(h,A)|0)<<4)|0;B=G+((aa(h,B)|0)<<4)|0;C=G+((aa(h,C)|0)<<4)|0;if(y){h=0;do{K=z+(h<<4)|0;I=+p[K>>3];J=+p[K+8>>3];K=e+(h<<4)|0;L=+p[K>>3]+(o*I-x*J);G=e+(h<<4)+8|0;J=x*I+o*J+ +p[G>>3];p[K>>3]=L;p[G>>3]=J;M=A+(h<<4)|0;I=+p[M>>3];H=+p[M+8>>3];L=L+(n*I-v*H);H=J+(v*I+n*H);p[K>>3]=L;p[G>>3]=H;M=B+(h<<4)|0;I=+p[M>>3];J=+p[M+8>>3];L=L+(j*I-s*J);J=H+(s*I+j*J);p[K>>3]=L;p[G>>3]=J;M=C+(h<<4)|0;I=+p[M>>3];H=+p[M+8>>3];p[K>>3]=L+(i*I-q*H);p[G>>3]=J+(q*I+i*H);h=h+1|0}while((h|0)!=(a|0))}l=l+4|0}while((l|0)<(f|0))}if((f|0)>=(b|0)){u=F;return}m=E+8|0;if((a|0)<=0){do{uk(E,g,(k[d>>2]|0)+(f<<4)|0);f=f+1|0}while((f|0)!=(b|0));u=F;return}do{uk(E,g,(k[d>>2]|0)+(f<<4)|0);i=+p[E>>3];j=+p[m>>3];l=(k[c>>2]|0)+((aa(k[D>>2]|0,f)|0)<<4)|0;h=0;do{M=l+(h<<4)|0;J=+p[M>>3];L=+p[M+8>>3];M=e+(h<<4)|0;p[M>>3]=+p[M>>3]+(i*J-j*L);M=e+(h<<4)+8|0;p[M>>3]=j*J+i*L+ +p[M>>3];h=h+1|0}while((h|0)!=(a|0));f=f+1|0}while((f|0)!=(b|0));u=F;return}function wn(a,b,c,d,e,f,g,h,i,j,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((o|0)<=-1)Oa(16605,15693,425,29764);N=i+4|0;if((k[N>>2]|0)<=(o|0))Oa(16605,15693,425,29764);O=(k[i>>2]|0)+(o<<2)|0;r=k[O>>2]|0;k[O>>2]=b;O=c+4|0;if((k[O>>2]|0)<=(o|0))Oa(16605,15693,425,29764);q=k[(k[c>>2]|0)+(o<<2)>>2]|0;if((q|0)==-1){a=k[n>>2]|0;k[n>>2]=a+1;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[e+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[e>>2]|0)+(a<<2)>>2]=o;a=k[n>>2]|0;o=k[p+8>>2]|0;q=o+48|0;if((a|0)>=(k[q>>2]|0))dn(k[p+12>>2]|0,e,q,a,0,o+88|0)|0;if(((k[p>>2]|0)+-1|0)==(r|0))return;k[k[p+4>>2]>>2]=-1;return}if((q|0)<=-1)Oa(16605,15693,425,29764);K=m+12|0;if((k[K>>2]|0)<=(q|0))Oa(16605,15693,425,29764);L=m+8|0;M=k[(k[L>>2]|0)+(q<<2)>>2]|0;a=M+1|0;if((M|0)<=-2)Oa(16605,15693,425,29764);M=m+4|0;if((k[M>>2]|0)<=(a|0))Oa(16605,15693,425,29764);r=k[(k[m>>2]|0)+(a<<2)>>2]|0;s=r+-1|0;if((r|0)<=0)Oa(16605,15693,425,29764);J=g+4|0;if((k[J>>2]|0)<(r|0))Oa(16605,15693,425,29764);o=(k[g>>2]|0)+(s<<2)|0;a=k[o>>2]|0;if((a|0)!=-1){if((a|0)<=(q|0))return;k[o>>2]=q;return}I=j+4|0;if((k[I>>2]|0)<(r|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(s<<2)>>2]=-1;if((k[J>>2]|0)<(r|0))Oa(16605,15693,425,29764);k[o>>2]=q;F=m+44|0;if((k[F>>2]|0)<(r|0))Oa(16605,15693,425,29764);G=m+40|0;H=h+4|0;if((k[H>>2]|0)<(r|0))Oa(16605,15693,425,29764);y=f+4|0;z=l+4|0;A=m+28|0;B=m+24|0;C=e+4|0;D=p+8|0;E=p+4|0;x=p+12|0;a=s;o=(k[G>>2]|0)+(s<<2)|0;a:while(1){o=k[o>>2]|0;q=k[(k[h>>2]|0)+(a<<2)>>2]|0;b:do if((o|0)<(q|0))while(1){w=(o|0)>-1;c:while(1){if(!(w&(k[A>>2]|0)>(o|0))){a=39;break a}s=k[(k[B>>2]|0)+(o<<2)>>2]|0;o=o+1|0;if((s|0)<=-1){a=42;break a}if((k[N>>2]|0)<=(s|0)){a=42;break a}r=(k[i>>2]|0)+(s<<2)|0;u=k[r>>2]|0;do if((u|0)!=(b|0)){k[r>>2]=b;if((k[O>>2]|0)<=(s|0)){a=45;break a}v=k[(k[c>>2]|0)+(s<<2)>>2]|0;if((v|0)==-1){r=k[n>>2]|0;k[n>>2]=r+1;if(!((r|0)>-1?(k[C>>2]|0)>(r|0):0)){a=48;break a}k[(k[e>>2]|0)+(r<<2)>>2]=s;r=k[n>>2]|0;s=k[D>>2]|0;t=s+48|0;if((r|0)>=(k[t>>2]|0))dn(k[x>>2]|0,e,t,r,0,s+88|0)|0;if(((k[p>>2]|0)+-1|0)==(u|0))break;k[k[E>>2]>>2]=-1;break}if(!((v|0)>-1?(k[K>>2]|0)>(v|0):0)){a=54;break a}u=k[(k[L>>2]|0)+(v<<2)>>2]|0;r=u+1|0;if(!((u|0)>-2?(k[M>>2]|0)>(r|0):0)){a=56;break a}r=k[(k[m>>2]|0)+(r<<2)>>2]|0;u=r+-1|0;if((r|0)<=0){a=59;break a}if((k[J>>2]|0)<(r|0)){a=59;break a}s=(k[g>>2]|0)+(u<<2)|0;t=k[s>>2]|0;if((t|0)==-1)break c;if((t|0)<=(v|0))break;k[s>>2]=v}while(0);if((o|0)>=(q|0))break b}if(!((a|0)>-1?(k[z>>2]|0)>(a|0):0)){a=65;break a}k[(k[l>>2]|0)+(a<<2)>>2]=o;if((k[I>>2]|0)<(r|0)){a=67;break a}k[(k[j>>2]|0)+(u<<2)>>2]=a;if((k[J>>2]|0)<(r|0)){a=69;break a}k[s>>2]=v;if((k[F>>2]|0)<(r|0)){a=71;break a}if((k[H>>2]|0)<(r|0)){a=73;break a}o=k[(k[G>>2]|0)+(u<<2)>>2]|0;q=k[(k[h>>2]|0)+(u<<2)>>2]|0;if((o|0)>=(q|0)){a=u;break}else a=u}while(0);o=k[d>>2]|0;if(!((o|0)>-1?(k[y>>2]|0)>(o|0):0)){a=76;break}k[(k[f>>2]|0)+(o<<2)>>2]=a;k[d>>2]=(k[d>>2]|0)+1;if(!((a|0)>-1?(k[I>>2]|0)>(a|0):0)){a=78;break}o=k[(k[j>>2]|0)+(a<<2)>>2]|0;if((o|0)==-1){a=82;break}if(!((o|0)>-1?(k[z>>2]|0)>(o|0):0)){a=81;break}if((k[H>>2]|0)>(o|0)){a=o;o=(k[l>>2]|0)+(o<<2)|0}else{a=35;break}}switch(a|0){case 35:{Oa(16605,15693,425,29764);break}case 39:{Oa(16605,15693,425,29764);break}case 42:{Oa(16605,15693,425,29764);break}case 45:{Oa(16605,15693,425,29764);break}case 48:{Oa(16605,15693,425,29764);break}case 54:{Oa(16605,15693,425,29764);break}case 56:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 69:{Oa(16605,15693,425,29764);break}case 71:{Oa(16605,15693,425,29764);break}case 73:{Oa(16605,15693,425,29764);break}case 76:{Oa(16605,15693,425,29764);break}case 78:{Oa(16605,15693,425,29764);break}case 81:{Oa(16605,15693,425,29764);break}case 82:return}}function xn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,v=0.0,w=0.0,x=0;r=u;u=u+64|0;o=r+48|0;q=r+32|0;m=r+16|0;n=r;a=j+i|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[h+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);c=k[h>>2]|0;a=k[c+(a<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[b+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);l=k[b>>2]|0;h=l+(a<<4)|0;k[o>>2]=k[h>>2];k[o+4>>2]=k[h+4>>2];k[o+8>>2]=k[h+8>>2];k[o+12>>2]=k[h+12>>2];h=aa(j,f)|0;h=j+1+h+(k[e>>2]|0)|0;k[e>>2]=h;h=(k[d>>2]|0)+(h<<4)|0;d=c+(i<<2)+(j<<2)|0;c=d+4|0;a:do if((g|0)>1){f=n+8|0;i=n+8|0;a=0;while(1){e=d+8|0;j=k[c>>2]|0;c=k[e>>2]|0;x=h+16|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];h=h+32|0;k[m>>2]=k[x>>2];k[m+4>>2]=k[x+4>>2];k[m+8>>2]=k[x+8>>2];k[m+12>>2]=k[x+12>>2];w=+p[l+(j<<4)>>3];v=+p[l+(j<<4)+8>>3];t=+p[l+(c<<4)>>3];s=+p[l+(c<<4)+8>>3];uk(n,o,q);w=w-+p[n>>3];v=v-+p[f>>3];uk(n,o,m);t=t-+p[n>>3];s=s-+p[i>>3];l=k[b>>2]|0;p[l+(j<<4)>>3]=w;p[l+(j<<4)+8>>3]=v;j=k[b>>2]|0;p[j+(c<<4)>>3]=t;p[j+(c<<4)+8>>3]=s;a=a+2|0;c=d+12|0;if((a|1|0)>=(g|0))break a;d=e;l=k[b>>2]|0}}else a=0;while(0);if((a|0)>=(g|0)){u=r;return}uk(q,o,h);x=k[c>>2]|0;g=k[b>>2]|0;b=g+(x<<4)|0;p[b>>3]=+p[b>>3]-+p[q>>3];x=g+(x<<4)+8|0;p[x>>3]=+p[x>>3]-+p[q+8>>3];u=r;return}function yn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+48|0;t=A+44|0;y=A+32|0;v=A+24|0;w=A;z=j+i|0;x=(a|0)>0;a:do if(x){n=h+4|0;o=b+4|0;q=c+4|0;r=(z|0)>-1;i=z;m=0;while(1){if(!(r&(k[n>>2]|0)>(i|0))){i=4;break}s=k[(k[h>>2]|0)+(i<<2)>>2]|0;if((s|0)<=-1){i=7;break}if((k[o>>2]|0)<=(s|0)){i=7;break}if((k[q>>2]|0)<=(m|0)){i=9;break}B=(k[b>>2]|0)+(s<<4)|0;s=(k[c>>2]|0)+(m<<4)|0;k[s>>2]=k[B>>2];k[s+4>>2]=k[B+4>>2];k[s+8>>2]=k[B+8>>2];k[s+12>>2]=k[B+12>>2];m=m+1|0;if((m|0)>=(a|0))break a;else i=i+1|0}if((i|0)==4)Oa(16605,15693,425,29764);else if((i|0)==7)Oa(16605,15693,425,29764);else if((i|0)==9)Oa(16605,15693,425,29764)}while(0);i=(aa(j,f)|0)+j|0;i=i+(k[e>>2]|0)|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;if((f|0)<=-1)Oa(19264,19297,66,19366);m=(a|0)>-1;if(!(m|(i|0)==0))Oa(13818,13988,175,14058);k[y>>2]=k[c>>2];n=y+4|0;k[n>>2]=a;if(!m)Oa(14697,13988,163,14058);k[w>>2]=i;k[w+4>>2]=a;k[w+8>>2]=a;k[w+12>>2]=f;k[v>>2]=w;k[v+4>>2]=y;sn(y,v,t);i=(k[e>>2]|0)+a|0;k[e>>2]=i;i=(k[d>>2]|0)+(i<<4)|0;if(!((g|a|0)>-1|(i|0)==0))Oa(13818,13988,175,14058);t=(k[c>>2]|0)+(a<<4)|0;if((g|0)<=-1)Oa(19264,19297,66,19366);if(g|0)iF(t|0,0,g<<4|0)|0;fn(g,1,a,i,f,k[y>>2]|0,k[n>>2]|0,t,g);b:do if(x){q=h+4|0;r=c+4|0;s=b+4|0;j=(z|0)>-1;i=z;n=0;while(1){o=i+1|0;if(!(j&(k[q>>2]|0)>(i|0))){i=28;break}i=k[(k[h>>2]|0)+(i<<2)>>2]|0;if((k[r>>2]|0)<=(n|0)){i=30;break}m=(k[c>>2]|0)+(n<<4)|0;if((i|0)<=-1){i=33;break}if((k[s>>2]|0)<=(i|0)){i=33;break}B=(k[b>>2]|0)+(i<<4)|0;k[B>>2]=k[m>>2];k[B+4>>2]=k[m+4>>2];k[B+8>>2]=k[m+8>>2];k[B+12>>2]=k[m+12>>2];n=n+1|0;if((n|0)>=(a|0)){l=o;break b}else i=o}if((i|0)==28)Oa(16605,15693,425,29764);else if((i|0)==30)Oa(16605,15693,425,29764);else if((i|0)==33)Oa(16605,15693,425,29764)}else l=z;while(0);if((g|0)<=0){u=A;return}s=k[h+4>>2]|0;o=k[h>>2]|0;q=b+4|0;r=(l|0)>-1;i=0;while(1){if(!(r&(s|0)>(l|0))){i=36;break}m=k[o+(l<<2)>>2]|0;n=t+(i<<4)|0;if((m|0)<=-1){i=39;break}if((k[q>>2]|0)<=(m|0)){i=39;break}B=k[b>>2]|0;h=B+(m<<4)|0;p[h>>3]=+p[h>>3]-+p[n>>3];B=B+(m<<4)+8|0;p[B>>3]=+p[B>>3]-+p[n+8>>3];i=i+1|0;if((i|0)>=(g|0)){i=41;break}else l=l+1|0}if((i|0)==36)Oa(16605,15693,425,29764);else if((i|0)==39)Oa(16605,15693,425,29764);else if((i|0)==41){u=A;return}}function zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=k[b>>2]|0;f=a+4|0;g=k[f>>2]|0;if((g|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);c=k[b+4>>2]|0;b=k[a>>2]|0;d=k[c>>2]|0;if(!((b|0)==(d|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0)){if((g|0)!=(k[c+4>>2]|0))Oa(14445,14320,257,12780);if((g|0)>0){c=0;do{h=b+(c<<4)|0;i=d+(c<<4)|0;k[h>>2]=k[i>>2];k[h+4>>2]=k[i+4>>2];k[h+8>>2]=k[i+8>>2];k[h+12>>2]=k[i+12>>2];c=c+1|0}while((c|0)!=(g|0))}}i=k[e+8>>2]|0;if((i|0)==(k[f>>2]|0)?(i|0)==(k[e+4>>2]|0):0){An(e,a);return}else Oa(19710,19864,170,18516)}function An(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=u;c=k[b+4>>2]|0;if(c>>>0>268435455){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}d=k[b>>2]|0;e=c<<4;if(!d)do if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}k[d+-4>>2]=c;if(!d){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else{c=k[b>>2]|0;break}}else{d=u;u=u+((1*(e|15)|0)+15&-16)|0;d=d+15&-16;c=0}while(0);else c=d;c=(c|0)==0?d:0;un(k[a+8>>2]|0,k[a>>2]|0,k[a+12>>2]|0,d);if((c|0)==0|e>>>0>131072^1){u=f;return}Pq(k[c+-4>>2]|0);u=f;return}function Bn(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;var h=0,i=0.0,j=0.0,l=0,m=0,n=0,o=0.0,q=0.0,r=0.0,s=0.0,t=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0;G=u;u=u+16|0;F=G;E=c+4|0;f=((b|0)/4|0)<<2;if((b|0)>3){y=d+4|0;w=F+8|0;t=F+8|0;n=F+8|0;m=F+8|0;z=(a|0)>0;l=0;do{uk(F,g,(k[d>>2]|0)+((aa(k[y>>2]|0,l)|0)<<4)|0);q=+p[F>>3];x=+p[w>>3];B=l|1;uk(F,g,(k[d>>2]|0)+((aa(k[y>>2]|0,B)|0)<<4)|0);o=+p[F>>3];v=+p[t>>3];C=l|2;uk(F,g,(k[d>>2]|0)+((aa(k[y>>2]|0,C)|0)<<4)|0);j=+p[F>>3];s=+p[n>>3];D=l|3;uk(F,g,(k[d>>2]|0)+((aa(k[y>>2]|0,D)|0)<<4)|0);i=+p[F>>3];r=+p[m>>3];H=k[c>>2]|0;h=k[E>>2]|0;A=H+((aa(h,l)|0)<<4)|0;B=H+((aa(h,B)|0)<<4)|0;C=H+((aa(h,C)|0)<<4)|0;D=H+((aa(h,D)|0)<<4)|0;if(z){h=0;do{L=A+(h<<4)|0;J=+p[L>>3];K=+p[L+8>>3];L=e+(h<<4)|0;M=+p[L>>3]+(q*J-x*K);H=e+(h<<4)+8|0;K=x*J+q*K+ +p[H>>3];p[L>>3]=M;p[H>>3]=K;N=B+(h<<4)|0;J=+p[N>>3];I=+p[N+8>>3];M=M+(o*J-v*I);I=K+(v*J+o*I);p[L>>3]=M;p[H>>3]=I;N=C+(h<<4)|0;J=+p[N>>3];K=+p[N+8>>3];M=M+(j*J-s*K);K=I+(s*J+j*K);p[L>>3]=M;p[H>>3]=K;N=D+(h<<4)|0;J=+p[N>>3];I=+p[N+8>>3];p[L>>3]=M+(i*J-r*I);p[H>>3]=K+(r*J+i*I);h=h+1|0}while((h|0)!=(a|0))}l=l+4|0}while((l|0)<(f|0))}if((f|0)>=(b|0)){u=G;return}n=d+4|0;m=F+8|0;if((a|0)<=0){do{uk(F,g,(k[d>>2]|0)+((aa(k[n>>2]|0,f)|0)<<4)|0);f=f+1|0}while((f|0)!=(b|0));u=G;return}do{uk(F,g,(k[d>>2]|0)+((aa(k[n>>2]|0,f)|0)<<4)|0);i=+p[F>>3];j=+p[m>>3];l=(k[c>>2]|0)+((aa(k[E>>2]|0,f)|0)<<4)|0;h=0;do{N=l+(h<<4)|0;K=+p[N>>3];M=+p[N+8>>3];N=e+(h<<4)|0;p[N>>3]=+p[N>>3]+(i*K-j*M);N=e+(h<<4)+8|0;p[N>>3]=j*K+i*M+ +p[N>>3];h=h+1|0}while((h|0)!=(a|0));f=f+1|0}while((f|0)!=(b|0));u=G;return}function Cn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+28>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}ak(a,d,c);c=k[b>>2]|0;d=k[c+28>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Dn(h,i,a)|0;return}ak(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Dn(h,i,a)|0;return}function Dn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+96|0;D=F+56|0;A=F+28|0;E=F;if(!(i[a+8>>0]|0))Oa(20078,18907,220,18314);B=b+4|0;C=b+8|0;ak(c,k[B>>2]|0,k[C>>2]|0);d=k[C>>2]|0;a:do if((d|0)>0){p=a+140|0;n=D+4|0;o=D+8|0;l=D+16|0;m=D+20|0;h=D+24|0;j=D+28|0;q=a+144|0;r=c+4|0;s=A+4|0;t=A+12|0;v=A+16|0;w=A+20|0;x=A+24|0;y=c+8|0;z=a+144|0;g=0;while(1){e=k[B>>2]|0;f=(k[b>>2]|0)+((aa(e,g)|0)<<4)|0;if(!((e|0)>-1|(f|0)==0)){d=8;break}if((d|0)<=(g|0)){d=10;break}k[D>>2]=p;k[n>>2]=f;k[o>>2]=e;k[l>>2]=b;k[m>>2]=0;k[h>>2]=g;k[j>>2]=e;if((k[q>>2]|0)!=(e|0)){d=12;break}d=k[r>>2]|0;f=(k[c>>2]|0)+((aa(d,g)|0)<<4)|0;k[A>>2]=f;k[s>>2]=d;if(!((d|0)>-1|(f|0)==0)){d=14;break}k[t>>2]=c;k[v>>2]=0;k[w>>2]=g;k[x>>2]=d;if((k[y>>2]|0)<=(g|0)){d=16;break}if((d|0)!=(k[z>>2]|0)){d=18;break}Fn(A,p,n);g=g+1|0;d=k[C>>2]|0;if((g|0)>=(d|0))break a}if((d|0)==8)Oa(13818,13988,175,14058);else if((d|0)==10)Oa(13577,13744,122,13812);else if((d|0)==12)Oa(14710,14850,97,14920);else if((d|0)==14)Oa(13818,13988,175,14058);else if((d|0)==16)Oa(13577,13744,122,13812);else if((d|0)==18)Oa(14445,14320,257,12780)}while(0);B=a+60|0;Gn(B,c);k[D>>2]=B;k[D+4>>2]=a+96;En(D,c);if((k[C>>2]|0)<=0){u=F;return 1}b=a+132|0;p=b;q=c+4|0;r=c+8|0;n=D+4|0;o=D+8|0;l=D+16|0;m=D+20|0;h=D+24|0;j=D+28|0;s=a+136|0;t=E+4|0;v=E+12|0;w=E+16|0;x=E+20|0;y=E+24|0;e=a+136|0;d=0;while(1){f=k[q>>2]|0;g=(k[c>>2]|0)+((aa(f,d)|0)<<4)|0;if(!((f|0)>-1|(g|0)==0)){d=22;break}if((k[r>>2]|0)<=(d|0)){d=24;break}k[D>>2]=p;k[n>>2]=g;k[o>>2]=f;k[l>>2]=c;k[m>>2]=0;k[h>>2]=d;k[j>>2]=f;if((k[s>>2]|0)!=(f|0)){d=26;break}k[E>>2]=g;k[t>>2]=f;k[v>>2]=c;k[w>>2]=0;k[x>>2]=d;k[y>>2]=f;if((f|0)!=(k[e>>2]|0)){d=28;break}Pn(E,b,n);d=d+1|0;if((d|0)>=(k[C>>2]|0)){d=20;break}}if((d|0)==20){u=F;return 1}else if((d|0)==22)Oa(13818,13988,175,14058);else if((d|0)==24)Oa(13577,13744,122,13812);else if((d|0)==26)Oa(14710,14850,97,14920);else if((d|0)==28)Oa(14445,14320,257,12780);return 0}function En(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0;M=u;u=u+80|0;A=M+24|0;F=M;G=M+64|0;H=M+40|0;I=b+8|0;J=k[I>>2]|0;K=b+4|0;L=k[K>>2]|0;d=k[a>>2]|0;c=k[d+8>>2]|0;if((c|0)<=-1){u=M;return}t=(J|0)>0;v=F+8|0;w=a+4|0;x=A+8|0;y=(L|0)>-1;z=F+4|0;B=F+8|0;C=F+12|0;r=H+4|0;s=H+8|0;D=H+12|0;E=G+4|0;a:while(1){q=k[d+32>>2]|0;o=k[q+(c<<2)>>2]|0;e=k[d+16>>2]|0;g=k[e+(o<<2)>>2]|0;q=k[q+(c+1<<2)>>2]|0;f=q-o|0;b:do if((f|0)==1){if(t){if((o|0)<=-1){n=9;break a}e=k[K>>2]|0;if((e|0)>(o|0))f=0;else{n=9;break a}while(1){d=k[d+12>>2]|0;if((k[I>>2]|0)<=(f|0)){n=9;break a}n=(k[b>>2]|0)+((aa(e,f)|0)+o<<4)|0;N=+p[d+(g<<4)+8>>3];p[F>>3]=+p[d+(g<<4)>>3];p[v>>3]=N;tk(A,n,F);k[n>>2]=k[A>>2];k[n+4>>2]=k[A+4>>2];k[n+8>>2]=k[A+8>>2];k[n+12>>2]=k[A+12>>2];f=f+1|0;if((f|0)>=(J|0)){n=25;break b}e=k[K>>2]|0;if((e|0)<=(o|0)){n=9;break a}else d=k[a>>2]|0}}}else{e=(k[e+(o+1<<2)>>2]|0)-g|0;d=(k[d+12>>2]|0)+(g<<4)|0;if((e|0)<=-1){n=13;break a}if(!((f|0)>-1|(d|0)==0)){n=15;break a}if((o|0)<=-1){n=19;break a}if((k[K>>2]|0)<=(o|0)){n=19;break a}if((k[I>>2]|0)<=0){n=19;break a}if(!y){n=21;break a}k[F>>2]=(k[b>>2]|0)+(o<<4);k[z>>2]=f;k[B>>2]=J;if((f|J|0)<=-1){n=23;break a}k[C>>2]=L;k[H>>2]=d;k[r>>2]=f;k[s>>2]=f;k[D>>2]=e;k[G>>2]=H;k[E>>2]=F;Mn(F,G,A);n=25}while(0);if((n|0)==25?(n=0,t):0){j=(q|0)>(o|0);i=0;do{if(j){h=o;do{e=k[w>>2]|0;l=k[e+28>>2]|0;m=k[e+24>>2]|0;d=k[e+20>>2]|0;f=k[d+(h<<2)>>2]|0;e=k[e+32>>2]|0;if(!e)g=k[d+(h+1<<2)>>2]|0;else g=(k[e+(h<<2)>>2]|0)+f|0;if((f|0)<(g|0)){if((h|0)<=-1){n=43;break a}d=f;f=k[K>>2]|0;do{e=k[m+(d<<2)>>2]|0;if((f|0)<=(h|0)){n=44;break a}if((k[I>>2]|0)<=(i|0)){n=44;break a}uk(A,(k[b>>2]|0)+((aa(f,i)|0)+h<<4)|0,l+(d<<4)|0);if((e|0)<=-1){n=45;break a}f=k[K>>2]|0;if((f|0)<=(e|0)){n=45;break a}if((k[I>>2]|0)<=(i|0)){n=45;break a}O=k[b>>2]|0;e=(aa(f,i)|0)+e|0;P=O+(e<<4)|0;p[P>>3]=+p[P>>3]-+p[A>>3];e=O+(e<<4)+8|0;p[e>>3]=+p[e>>3]-+p[x>>3];d=d+1|0}while((d|0)<(g|0))}h=h+1|0}while((h|0)<(q|0))}i=i+1|0}while((i|0)<(J|0))}if((c|0)<=0){n=3;break}c=c+-1|0;d=k[a>>2]|0}switch(n|0){case 3:{u=M;return}case 9:{Oa(15640,15693,365,29764);break}case 13:{Oa(19264,19297,66,19366);break}case 15:{Oa(13818,13988,175,14058);break}case 19:{Oa(15640,15693,365,29764);break}case 21:{Oa(19264,19297,66,19366);break}case 23:{Oa(13818,13988,175,14058);break}case 43:{Oa(15640,15693,365,29764);break}case 44:{Oa(15640,15693,365,29764);break}case 45:{Oa(15640,15693,365,29764);break}}}function Fn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+16|0;p=r;f=k[c>>2]|0;g=k[c+4>>2]|0;if((k[a>>2]|0)==(f|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0){m=b+4|0;n=k[m>>2]|0;if((n|0)<=-1)Oa(13359,12702,312,12780);if(!n){u=r;return}c=Oq(n+16|0)|0;o=c+16&-16;if(!c){r=Kb(4)|0;cF(r);Cc(r|0,2032,79)}k[o+-4>>2]=c;if(!o){r=Kb(4)|0;cF(r);Cc(r|0,2032,79)}j=o;iF(j|0,0,n|0)|0;c=k[m>>2]|0;a:do if((c|0)>0){l=a+4|0;d=0;b:while(1){c:do if((d|0)<(c|0)){e=(d|0)>-1;while(1){if(!(e&(n|0)>(d|0))){q=17;break b}if(!(i[j+d>>0]|0)){h=d;break c}d=d+1|0;if((d|0)>=(c|0)){h=d;break}}}else h=d;while(0);if((h|0)>=(c|0)){q=29;break a}d=h+1|0;i[j+h>>0]=1;c=k[(k[b>>2]|0)+(h<<2)>>2]|0;if((c|0)!=(h|0)){if((h|0)<=-1){q=26;break}do{e=k[a>>2]|0;f=e+(c<<4)|0;g=k[l>>2]|0;if(!((c|0)>-1&(g|0)>(c|0))){q=27;break b}if((g|0)<=(h|0)){q=28;break b}g=e+(h<<4)|0;k[p>>2]=k[f>>2];k[p+4>>2]=k[f+4>>2];k[p+8>>2]=k[f+8>>2];k[p+12>>2]=k[f+12>>2];k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];k[f+12>>2]=k[g+12>>2];k[g>>2]=k[p>>2];k[g+4>>2]=k[p+4>>2];k[g+8>>2]=k[p+8>>2];k[g+12>>2]=k[p+12>>2];i[j+c>>0]=1;c=k[(k[b>>2]|0)+(c<<2)>>2]|0}while((c|0)!=(h|0))}c=k[m>>2]|0;if((d|0)>=(c|0))break a}if((q|0)==17)Oa(16605,15693,408,29907);else if((q|0)==26)if((c|0)>-1?(k[l>>2]|0)>(c|0):0)Oa(13577,13744,122,13812);else Oa(13577,13744,122,13812);else if((q|0)==27)Oa(13577,13744,122,13812);else if((q|0)==28)Oa(13577,13744,122,13812)}else q=29;while(0);if((q|0)==29?(o|0)==0:0){u=r;return}Pq(k[j+-4>>2]|0);u=r;return}if((g|0)<=0){u=r;return}e=a+4|0;c=0;while(1){d=k[(k[b>>2]|0)+(c<<2)>>2]|0;if(!((d|0)>-1?(k[e>>2]|0)>(d|0):0)){q=32;break}vF((k[a>>2]|0)+(d<<4)|0,f+(c<<4)|0,16)|0;c=c+1|0;if((c|0)>=(g|0)){q=34;break}}if((q|0)==32)Oa(13577,13744,122,13812);else if((q|0)==34){u=r;return}}function Gn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;fa=u;u=u+128|0;Y=fa+24|0;ea=fa+112|0;Z=fa;_=fa+84|0;$=fa+64|0;ba=b+4|0;ca=k[ba>>2]|0;da=b+8|0;T=k[da>>2]|0;U=a+12|0;V=k[U>>2]|0;k[ea>>2]=0;W=ea+4|0;k[W>>2]=0;X=ea+8|0;k[X>>2]=0;ak(ea,ca,T);c=k[W>>2]|0;d=k[X>>2]|0;if((d|c|0)<=-1)Oa(11919,12068,74,12145);c=aa(d,c)|0;if((c|0)>0)iF(k[ea>>2]|0,0,c<<4|0)|0;N=a+8|0;a:do if((k[N>>2]|0)>=0){O=a+32|0;P=a+24|0;Q=(T|0)>0;R=a+28|0;S=a+16|0;v=a+20|0;w=Y+8|0;x=(ca|0)>-1;y=Z+4|0;z=Z+8|0;A=Z+12|0;r=$+4|0;t=$+8|0;B=$+12|0;C=_+4|0;q=Y+4|0;s=Y+8|0;D=Y+12|0;E=Y+20|0;F=Y+32|0;G=_+4|0;H=_+8|0;I=_+12|0;J=_+16|0;K=_+20|0;L=_+24|0;M=Y+28|0;n=0;b:while(1){d=k[O>>2]|0;m=k[d+(n<<2)>>2]|0;a=k[P>>2]|0;e=k[a+(m<<2)>>2]|0;j=m+1|0;o=n;n=n+1|0;f=(k[d+(n<<2)>>2]|0)-m|0;l=(k[a+(j<<2)>>2]|0)-e-f|0;c:do if((f|0)==1){if(Q){i=(m|0)>-1;c=0;while(1){f=k[S>>2]|0;h=k[f+(j<<2)>>2]|0;l=k[d+(k[(k[R>>2]|0)+(m<<2)>>2]<<2)>>2]|0;g=k[a+(l+1<<2)>>2]|0;d=(k[f+(m<<2)>>2]|0)+1|0;a=(k[a+(l<<2)>>2]|0)+1|0;d:do if((d|0)<(h|0)){if(!i)if((a|0)<(g|0)){c=23;break b}else break;while(1){if((a|0)>=(g|0))break d;f=k[(k[v>>2]|0)+(a<<2)>>2]|0;e=k[ba>>2]|0;if((e|0)<=(m|0)){c=24;break b}if((k[da>>2]|0)<=(c|0)){c=24;break b}l=(k[b>>2]|0)+((aa(e,c)|0)+m<<4)|0;e=(k[U>>2]|0)+(d<<4)|0;k[Z>>2]=k[e>>2];k[Z+4>>2]=k[e+4>>2];k[Z+8>>2]=k[e+8>>2];k[Z+12>>2]=k[e+12>>2];uk(Y,l,Z);if((f|0)<=-1){c=25;break b}e=k[ba>>2]|0;if((e|0)<=(f|0)){c=25;break b}if((k[da>>2]|0)<=(c|0)){c=25;break b}ga=k[b>>2]|0;l=(aa(e,c)|0)+f|0;f=ga+(l<<4)|0;p[f>>3]=+p[f>>3]-+p[Y>>3];l=ga+(l<<4)+8|0;p[l>>3]=+p[l>>3]-+p[w>>3];d=d+1|0;if((d|0)>=(h|0))break;else a=a+1|0}}while(0);c=c+1|0;if((c|0)>=(T|0))break c;d=k[O>>2]|0;a=k[P>>2]|0}}}else{a=k[S>>2]|0;d=k[a+(m<<2)>>2]|0;a=(k[a+(j<<2)>>2]|0)-d|0;if((a|0)<=-1){c=29;break b}c=V+(d<<4)|0;if(!((f|0)>-1|(c|0)==0)){c=31;break b}if((m|0)<=-1){c=35;break b}if((k[ba>>2]|0)<=(m|0)){c=35;break b}if((k[da>>2]|0)<=0){c=35;break b}if(!x){c=37;break b}k[Z>>2]=(k[b>>2]|0)+(m<<4);k[y>>2]=f;k[z>>2]=T;if((f|T|0)<=-1){c=39;break b}k[A>>2]=ca;k[$>>2]=c;k[r>>2]=f;k[t>>2]=f;k[B>>2]=a;k[_>>2]=$;k[C>>2]=Z;Hn(Z,_,Y);c=V+(d+f<<4)|0;if(!((l|f|0)>-1|(c|0)==0)){c=41;break b}k[Y>>2]=c;k[q>>2]=l;k[s>>2]=f;k[D>>2]=a;k[E>>2]=k[Z>>2];k[E+4>>2]=k[Z+4>>2];k[E+8>>2]=k[Z+8>>2];k[F>>2]=k[A>>2];if((f|0)!=(k[y>>2]|0)){c=43;break b}c=k[X>>2]|0;ga=k[ea>>2]|0;k[_>>2]=ga;k[G>>2]=l;k[H>>2]=c;if(!((c|l|0)>-1|(ga|0)==0)){c=45;break b}k[I>>2]=ea;k[J>>2]=0;k[K>>2]=0;d=k[W>>2]|0;k[L>>2]=d;if((l|0)<=-1){c=48;break b}if(!((c|0)>-1&(d|0)>=(l|0))){c=48;break b}if((c|0)!=(k[M>>2]|0)){c=50;break b}Jn(_,Y,E);if(Q){g=f+e|0;h=(l|0)>0;i=k[ea>>2]|0;a=0;do{if(h){e=0;f=g;while(1){j=k[(k[v>>2]|0)+(f<<2)>>2]|0;c=k[W>>2]|0;if(!((c|0)>(e|0)?(k[X>>2]|0)>(a|0):0)){c=63;break b}c=(aa(c,a)|0)+e|0;if((j|0)<=-1){c=64;break b}d=k[ba>>2]|0;if((d|0)<=(j|0)){c=64;break b}if((k[da>>2]|0)<=(a|0)){c=64;break b}m=k[b>>2]|0;ga=(aa(d,a)|0)+j|0;j=m+(ga<<4)|0;p[j>>3]=+p[j>>3]-+p[i+(c<<4)>>3];ga=m+(ga<<4)+8|0;p[ga>>3]=+p[ga>>3]-+p[i+(c<<4)+8>>3];if((k[X>>2]|0)<=(a|0)){c=65;break b}ga=i+(c<<4)|0;e=e+1|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;if((e|0)>=(l|0))break;else f=f+1|0}}a=a+1|0}while((a|0)<(T|0))}}while(0);if((o|0)>=(k[N>>2]|0))break a}switch(c|0){case 23:{Oa(15640,15693,365,29764);break}case 24:{Oa(15640,15693,365,29764);break}case 25:{Oa(15640,15693,365,29764);break}case 29:{Oa(19264,19297,66,19366);break}case 31:{Oa(13818,13988,175,14058);break}case 35:{Oa(15640,15693,365,29764);break}case 37:{Oa(19264,19297,66,19366);break}case 39:{Oa(13818,13988,175,14058);break}case 41:{Oa(13818,13988,175,14058);break}case 43:{Oa(14710,14850,97,14920);break}case 45:{Oa(13818,13988,175,14058);break}case 48:{Oa(14177,13744,147,13812);break}case 50:{Oa(14445,14320,257,12780);break}case 63:{Oa(15640,15693,365,29764);break}case 64:{Oa(15640,15693,365,29764);break}case 65:{Oa(15640,15693,365,29764);break}}}while(0);c=k[ea>>2]|0;if(!c){u=fa;return}Pq(k[c+-4>>2]|0);u=fa;return}function Hn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=k[b>>2]|0;e=k[b+4>>2]|0;d=k[e+8>>2]|0;j=a+4|0;c=k[j>>2]|0;if((c|0)!=(k[n+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(d|0)?(k[a+8>>2]|0)!=(d|0):0)Oa(14445,14320,257,12780);l=k[a>>2]|0;m=k[e>>2]|0;if((l|0)==(m|0)){b=k[e+12>>2]|0;if((k[a+12>>2]|0)!=(b|0))f=8}else{b=k[e+12>>2]|0;f=8}if((f|0)==8){if((c|0)!=(k[e+4>>2]|0))Oa(14445,14320,257,12780);i=a+8|0;if((d|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);h=k[a+12>>2]|0;if((d|0)>0){g=0;do{if((c|0)>0){e=aa(g,h)|0;f=aa(g,b)|0;d=0;do{c=l+(d+e<<4)|0;o=m+(d+f<<4)|0;k[c>>2]=k[o>>2];k[c+4>>2]=k[o+4>>2];k[c+8>>2]=k[o+8>>2];k[c+12>>2]=k[o+12>>2];d=d+1|0;c=k[j>>2]|0}while((d|0)<(c|0));d=k[i>>2]|0}g=g+1|0}while((g|0)<(d|0))}}o=k[n+8>>2]|0;if((o|0)==(c|0)?(o|0)==(k[n+4>>2]|0):0){In(n,a);return}else Oa(19710,19864,170,18516)}function In(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;on(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;nn(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function Jn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0;t=u;u=u+96|0;r=t;o=t+16|0;n=k[c+4>>2]|0;s=a+4|0;e=k[s>>2]|0;q=a+8|0;d=k[q>>2]|0;if(!((n|0)>0&(e+n+d|0)<20)){if((d|e|0)<=-1)Oa(11919,12068,74,12145);h=k[a>>2]|0;i=k[a+24>>2]|0;if((d|0)>0){g=0;do{if((e|0)>0){f=aa(g,i)|0;d=0;do{e=h+(d+f<<4)|0;d=d+1|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;e=k[s>>2]|0}while((d|0)<(e|0));d=k[q>>2]|0}g=g+1|0}while((g|0)<(d|0))}p[r>>3]=1.0;p[r+8>>3]=0.0;Kn(a,b,c,r);u=t;return}g=k[b>>2]|0;i=k[b+4>>2]|0;j=k[b+12>>2]|0;m=c;l=k[m>>2]|0;m=k[m+4>>2]|0;h=k[c+8>>2]|0;f=k[c+12>>2]|0;if((k[b+8>>2]|0)!=(n|0))Oa(14710,14850,97,14920);k[o>>2]=g;k[o+4>>2]=i;k[o+8>>2]=n;k[o+12>>2]=j;b=o+20|0;k[b>>2]=l;k[b+4>>2]=m;k[o+28>>2]=h;k[o+32>>2]=f;k[o+40>>2]=g;k[o+48>>2]=j;k[o+52>>2]=l;k[o+60>>2]=f;k[o+64>>2]=n;if(!((e|0)==(i|0)&(d|0)==(h|0)))Oa(14445,14320,257,12780);i=k[a>>2]|0;h=k[a+24>>2]|0;if((d|0)>0){g=0;do{if((e|0)>0){f=aa(g,h)|0;d=0;do{Ln(r,o,d,g);e=i+(d+f<<4)|0;k[e>>2]=k[r>>2];k[e+4>>2]=k[r+4>>2];k[e+8>>2]=k[r+8>>2];k[e+12>>2]=k[r+12>>2];d=d+1|0;e=k[s>>2]|0}while((d|0)<(e|0));d=k[q>>2]|0}g=g+1|0}while((g|0)<(d|0))}u=t;return}function Kn(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0;r=u;u=u+112|0;e=r+88|0;j=r+72|0;q=r+40|0;l=r;m=a+4|0;n=k[m>>2]|0;o=b+4|0;if((n|0)!=(k[o>>2]|0))Oa(15296,15349,460,15440);f=a+8|0;g=k[f>>2]|0;h=c+8|0;if((g|0)!=(k[h>>2]|0))Oa(15296,15349,460,15440);i=b+8|0;if((g|0)==0|((n|0)==0|(k[i>>2]|0)==0)){u=r;return}p[q>>3]=1.0;p[q+8>>3]=0.0;uk(e,d,q);p[l>>3]=1.0;p[l+8>>3]=0.0;uk(j,e,l);g=k[m>>2]|0;f=k[f>>2]|0;d=k[i>>2]|0;i=q;k[i>>2]=0;k[i+4>>2]=0;i=q+8|0;k[i>>2]=g;g=q+12|0;k[g>>2]=f;f=q+16|0;k[f>>2]=d;Mk(f,i,g,1);f=k[f>>2]|0;i=aa(f,k[i>>2]|0)|0;k[q+20>>2]=i;f=aa(k[g>>2]|0,f)|0;k[q+24>>2]=f;k[l>>2]=b;k[l+4>>2]=c;k[l+8>>2]=a;f=l+16|0;k[f>>2]=k[j>>2];k[f+4>>2]=k[j+4>>2];k[f+8>>2]=k[j+8>>2];k[f+12>>2]=k[j+12>>2];k[l+32>>2]=q;g=k[o>>2]|0;h=k[h>>2]|0;h=(h|0)==-1?k[c+8>>2]|0:h;i=k[b+8>>2]|0;d=k[b>>2]|0;j=k[b+12>>2]|0;l=k[c>>2]|0;m=k[c+12>>2]|0;n=k[a>>2]|0;o=k[a+24>>2]|0;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];k[e+8>>2]=k[f+8>>2];k[e+12>>2]=k[f+12>>2];Nk(g,h,i,d,j,l,m,n,o,e,q,0);e=k[q>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);e=k[q+4>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);u=r;return}function Ln(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;o=u;u=u+48|0;j=o+32|0;l=o+16|0;m=o;n=(k[b>>2]|0)+(c<<4)|0;h=k[b+8>>2]|0;if(!((n|0)==0|(h|0)>-1))Oa(13818,13988,175,14058);i=k[b+12>>2]|0;if((c|0)<=-1)Oa(13577,13744,122,13812);if((k[b+4>>2]|0)<=(c|0))Oa(13577,13744,122,13812);g=(k[b+20>>2]|0)+((aa(k[b+32>>2]|0,d)|0)<<4)|0;c=k[b+24>>2]|0;if(!((c|0)>-1|(g|0)==0))Oa(13818,13988,175,14058);if((d|0)<=-1)Oa(13577,13744,122,13812);if((k[b+28>>2]|0)<=(d|0))Oa(13577,13744,122,13812);if((h|0)!=(c|0))Oa(14550,14607,110,14683);if(!h){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;u=o;return}if((h|0)<=0)Oa(13148,13216,413,13284);b=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];k[j+12>>2]=k[n+12>>2];k[l>>2]=k[g>>2];k[l+4>>2]=k[g+4>>2];k[l+8>>2]=k[g+8>>2];k[l+12>>2]=k[g+12>>2];uk(m,j,l);k[a>>2]=k[m>>2];k[a+4>>2]=k[m+4>>2];k[a+8>>2]=k[m+8>>2];k[a+12>>2]=k[m+12>>2];if((h|0)==1){u=o;return}d=m+8|0;c=1;e=+p[a>>3];f=+p[b>>3];do{q=n+((aa(c,i)|0)<<4)|0;k[j>>2]=k[q>>2];k[j+4>>2]=k[q+4>>2];k[j+8>>2]=k[q+8>>2];k[j+12>>2]=k[q+12>>2];q=g+(c<<4)|0;k[l>>2]=k[q>>2];k[l+4>>2]=k[q+4>>2];k[l+8>>2]=k[q+8>>2];k[l+12>>2]=k[q+12>>2];uk(m,j,l);e=e+ +p[m>>3];f=f+ +p[d>>3];p[a>>3]=e;p[b>>3]=f;c=c+1|0}while((c|0)<(h|0));u=o;return}function Mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=k[b>>2]|0;e=k[b+4>>2]|0;d=k[e+8>>2]|0;j=a+4|0;c=k[j>>2]|0;if((c|0)!=(k[n+8>>2]|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(d|0)?(k[a+8>>2]|0)!=(d|0):0)Oa(14445,14320,257,12780);l=k[a>>2]|0;m=k[e>>2]|0;if((l|0)==(m|0)){b=k[e+12>>2]|0;if((k[a+12>>2]|0)!=(b|0))f=8}else{b=k[e+12>>2]|0;f=8}if((f|0)==8){if((c|0)!=(k[e+4>>2]|0))Oa(14445,14320,257,12780);i=a+8|0;if((d|0)!=(k[e+8>>2]|0))Oa(14445,14320,257,12780);h=k[a+12>>2]|0;if((d|0)>0){g=0;do{if((c|0)>0){e=aa(g,h)|0;f=aa(g,b)|0;d=0;do{c=l+(d+e<<4)|0;o=m+(d+f<<4)|0;k[c>>2]=k[o>>2];k[c+4>>2]=k[o+4>>2];k[c+8>>2]=k[o+8>>2];k[c+12>>2]=k[o+12>>2];d=d+1|0;c=k[j>>2]|0}while((d|0)<(c|0));d=k[i>>2]|0}g=g+1|0}while((g|0)<(d|0))}}o=k[n+8>>2]|0;if((o|0)==(c|0)?(o|0)==(k[n+4>>2]|0):0){Nn(n,a);return}else Oa(19710,19864,170,18516)}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=u;u=u+32|0;j=d+28|0;c=d;f=k[a+4>>2]|0;e=k[b+8>>2]|0;h=k[b+4>>2]|0;i=c;k[i>>2]=0;k[i+4>>2]=0;i=c+8|0;k[i>>2]=h;h=c+12|0;k[h>>2]=e;g=c+16|0;k[g>>2]=f;k[j>>2]=e;on(g,i,j,1);g=k[g>>2]|0;i=aa(g,k[i>>2]|0)|0;k[c+20>>2]=i;g=aa(k[h>>2]|0,g)|0;k[c+24>>2]=g;On(f,e,k[a>>2]|0,k[a+12>>2]|0,k[b>>2]|0,k[b+12>>2]|0,c);a=k[c>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[c+4>>2]|0;if(!a){u=d;return}Pq(k[a+-4>>2]|0);u=d;return}function On(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;var h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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.0,la=0;ja=u;u=u+112|0;Z=ja+80|0;ga=ja+64|0;ha=ja+98|0;ia=ja+97|0;$=ja+96|0;ba=ja+32|0;ca=ja;da=ja+48|0;ea=ja+16|0;fa=k[g+16>>2]|0;_=k[g+8>>2]|0;_=(_|0)<(a|0)?_:a;h=aa(_,fa)|0;m=aa(fa,b)|0;if(h>>>0>268435455){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}j=k[g>>2]|0;l=h<<4;if(!j)do if(l>>>0>=131073){h=Oq(l+16|0)|0;j=h+16&-16;if(!h){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}k[j+-4>>2]=h;if(!j){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}else{h=k[g>>2]|0;break}}else{j=u;u=u+((1*(l|15)|0)+15&-16)|0;j=j+15&-16;h=0}while(0);else h=j;Y=(h|0)==0?j:0;X=l>>>0>131072;if(m>>>0>268435455){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}g=g+4|0;l=k[g>>2]|0;m=m<<4;if(!l)do if(m>>>0>=131073){h=Oq(m+16|0)|0;l=h+16&-16;if(!h){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}k[l+-4>>2]=h;if(!l){ja=Kb(4)|0;cF(ja);Cc(ja|0,2032,79)}else{h=k[g>>2]|0;break}}else{l=u;u=u+((1*(m|15)|0)+15&-16)|0;l=l+15&-16;h=0}while(0);else h=l;W=(h|0)==0?l:0;U=m>>>0>131072;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}V=(b|0)>0;if(V)h=((((k[7995]|0)>>>0)/(((f|0)<(a|0)?a:f)<<6>>>0)|0|0)/4|0)<<2;else h=0;I=(h|0)>4?h:4;a:do if((a|0)>0){J=Z+4|0;K=ga+4|0;L=ea+8|0;M=Z+4|0;N=Z+4|0;O=ga+4|0;P=da+8|0;Q=Z+8|0;R=ba+8|0;S=ga+8|0;T=Z+8|0;G=a;do{H=(G|0)>(fa|0)?fa:G;if(V){z=(H|0)>0;A=G-H|0;v=0;do{y=b-v|0;y=(I|0)<(y|0)?I:y;if(z){B=l+((aa(v,H)|0)<<4)|0;C=aa(v,f)|0;D=e+(C+A<<4)|0;E=y+v|0;F=(y|0)>0;w=0;do{r=H-w|0;x=(r|0)<4?r:4;t=G-w|0;if((r|0)>0){q=0;do{s=t-q+-1|0;g=x-q|0;n=g+-1|0;o=s-n|0;p[Z>>3]=1.0;p[Q>>3]=0.0;h=aa(s,d)|0;tk(ba,Z,c+(h+s<<4)|0);b:do if(F){a=c+(h+o<<4)|0;if((g|0)>1)g=v;else{h=v;while(1){o=e+((aa(h,f)|0)+s<<4)|0;ka=+p[R>>3];p[ga>>3]=+p[ba>>3];p[S>>3]=ka;uk(Z,o,ga);k[o>>2]=k[Z>>2];k[o+4>>2]=k[Z+4>>2];k[o+8>>2]=k[Z+8>>2];k[o+12>>2]=k[Z+12>>2];h=h+1|0;if((h|0)>=(E|0))break b}}do{m=aa(g,f)|0;h=e+(m+s<<4)|0;ka=+p[R>>3];p[ga>>3]=+p[ba>>3];p[S>>3]=ka;uk(Z,h,ga);k[h>>2]=k[Z>>2];k[h+4>>2]=k[Z+4>>2];k[h+8>>2]=k[Z+8>>2];k[h+12>>2]=k[Z+12>>2];k[ca>>2]=k[h>>2];k[ca+4>>2]=k[h+4>>2];k[ca+8>>2]=k[h+8>>2];k[ca+12>>2]=k[h+12>>2];m=e+(m+o<<4)|0;h=0;do{uk(Z,ca,a+(h<<4)|0);la=m+(h<<4)|0;p[la>>3]=+p[la>>3]-+p[Z>>3];la=la+8|0;p[la>>3]=+p[la>>3]-+p[T>>3];h=h+1|0}while((h|0)<(n|0));g=g+1|0}while((g|0)<(E|0))}while(0);q=q+1|0}while((x|0)>(q|0))}g=r-x|0;h=t-x|0;k[Z>>2]=e+(h+C<<4);k[M>>2]=f;pn($,B,Z,x,y,H,g);if((g|0)>0){la=c+((aa(h,d)|0)+A<<4)|0;k[Z>>2]=la;k[N>>2]=d;Ok(ia,j,Z,x,g,0,0);k[ga>>2]=D;k[O>>2]=f;p[da>>3]=-1.0;p[P>>3]=0.0;k[Z>>2]=k[da>>2];k[Z+4>>2]=k[da+4>>2];k[Z+8>>2]=k[da+8>>2];k[Z+12>>2]=k[da+12>>2];Qk(ha,ga,j,B,g,x,y,Z,x,H,0,g)}w=w+4|0}while((H|0)>(w|0))}v=v+I|0}while((v|0)<(b|0))}G=G-fa|0;m=(G|0)>0;if(!m)break a;a=aa(G,d)|0;h=0;do{g=G-h|0;g=(g|0)<(_|0)?g:_;if((g|0)>0){k[Z>>2]=c+(h+a<<4);k[J>>2]=d;Ok(ia,j,Z,H,g,0,0);k[ga>>2]=e+(h<<4);k[K>>2]=f;p[ea>>3]=-1.0;p[L>>3]=0.0;k[Z>>2]=k[ea>>2];k[Z+4>>2]=k[ea+4>>2];k[Z+8>>2]=k[ea+8>>2];k[Z+12>>2]=k[ea+12>>2];Qk(ha,ga,j,l,g,H,b,Z,-1,-1,0,0)}h=h+_|0}while((G|0)>(h|0))}while(m)}while(0);if(!((W|0)==0|U^1))Pq(k[W+-4>>2]|0);if((Y|0)==0|X^1){u=ja;return}Pq(k[Y+-4>>2]|0);u=ja;return}function Pn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+16|0;q=s;f=k[c>>2]|0;g=k[c+4>>2]|0;if((k[a>>2]|0)==(f|0)?(k[a+24>>2]|0)==(k[c+24>>2]|0):0){n=b+4|0;o=k[n>>2]|0;if((o|0)<=-1)Oa(13359,12702,312,12780);if(!o){u=s;return}c=Oq(o+16|0)|0;p=c+16&-16;if(!c){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}k[p+-4>>2]=c;if(!p){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}l=p;iF(l|0,0,o|0)|0;c=k[n>>2]|0;a:do if((c|0)>0){m=a+4|0;d=0;b:while(1){c:do if((d|0)<(c|0)){e=(d|0)>-1;while(1){if(!(e&(o|0)>(d|0))){r=17;break b}if(!(i[l+d>>0]|0)){j=d;break c}d=d+1|0;if((d|0)>=(c|0)){j=d;break}}}else j=d;while(0);if((j|0)>=(c|0)){r=27;break a}d=j+1|0;i[l+j>>0]=1;c=k[(k[b>>2]|0)+(j<<2)>>2]|0;if((c|0)!=(j|0)){g=j;h=c;while(1){c=k[a>>2]|0;e=c+(h<<4)|0;f=k[m>>2]|0;if(!((h|0)>-1&(f|0)>(h|0))){r=23;break b}if(!((g|0)>-1&(f|0)>(g|0))){r=25;break b}c=c+(g<<4)|0;k[q>>2]=k[e>>2];k[q+4>>2]=k[e+4>>2];k[q+8>>2]=k[e+8>>2];k[q+12>>2]=k[e+12>>2];k[e>>2]=k[c>>2];k[e+4>>2]=k[c+4>>2];k[e+8>>2]=k[c+8>>2];k[e+12>>2]=k[c+12>>2];k[c>>2]=k[q>>2];k[c+4>>2]=k[q+4>>2];k[c+8>>2]=k[q+8>>2];k[c+12>>2]=k[q+12>>2];i[l+h>>0]=1;c=k[(k[b>>2]|0)+(h<<2)>>2]|0;if((c|0)==(j|0))break;else{g=h;h=c}}}c=k[n>>2]|0;if((d|0)>=(c|0))break a}if((r|0)==17)Oa(16605,15693,408,29907);else if((r|0)==23)Oa(13577,13744,122,13812);else if((r|0)==25)Oa(13577,13744,122,13812)}else r=27;while(0);if((r|0)==27?(p|0)==0:0){u=s;return}Pq(k[l+-4>>2]|0);u=s;return}if((g|0)<=0){u=s;return}e=a+4|0;c=0;while(1){d=k[(k[b>>2]|0)+(c<<2)>>2]|0;if(!((d|0)>-1&(g|0)>(d|0))){r=30;break}if((k[e>>2]|0)<=(c|0)){r=32;break}vF((k[a>>2]|0)+(c<<4)|0,f+(d<<4)|0,16)|0;c=c+1|0;if((c|0)>=(g|0)){r=34;break}}if((r|0)==30)Oa(13577,13744,122,13812);else if((r|0)==32)Oa(13577,13744,122,13812);else if((r|0)==34){u=s;return}}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Rn(a){a=a|0;return 528}function Sn(a){a=a|0;if(!a)return;el(a+8|0);EA(a);return}function Tn(a){a=a|0;var b=0;b=CA(216)|0;k[b>>2]=a;ol(b+8|0);i[b+208>>0]=0;i[b+209>>0]=0;return b|0}function Un(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function Vn(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+208|0;if(!(i[b>>0]|0)){i[b>>0]=0;c=a+209|0;i[c>>0]=0;e=(k[a>>2]|0)+664|0;nm(e);d=a+8|0;Wn(d,e);i[b>>0]=1;Xn(d,e);if(!(i[d>>0]|0))Oa(17611,20281,257,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}b=a+209|0;if(i[b>>0]|0)return;d=(k[a>>2]|0)+664|0;nm(d);e=a+8|0;Xn(e,d);if(!(i[e>>0]|0))Oa(17611,20281,257,17666);if(k[a+12>>2]|0)return;i[b>>0]=1;return}function Wn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+32|0;j=p+8|0;e=p;n=b+16|0;if(k[n>>2]|0)Oa(20150,20281,309,17410);g=a+136|0;Qm(p+16|0,b,g);l=k[b+4>>2]|0;m=k[b+8>>2]|0;o=(l|0)<(m|0)?l:m;d=a+140|0;c=k[d>>2]|0;if(!c){Ef(g,l);k[j>>2]=0;k[e>>2]=l+-1;Bj(g,l,j,e)|0;c=k[d>>2]|0}k[j>>2]=0;f=j+4|0;k[f>>2]=0;Ef(j,c);e=k[f>>2]|0;h=k[j>>2]|0;if((e|0)>0){d=k[g>>2]|0;c=0;do{k[h+(k[d+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0));e=k[f>>2]|0}f=a+152|0;c=a+156|0;if((k[c>>2]|0)!=(e|0)?(Ng(f,e,1),(k[c>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);c=k[f>>2]|0;if((e|0)>0){d=0;do{k[c+(d<<2)>>2]=k[h+(d<<2)>>2];d=d+1|0}while((d|0)!=(e|0))}d=k[j>>2]|0;if(d){Pq(k[d+-4>>2]|0);c=k[f>>2]|0}Rm(b,a+176|0,a+184|0,c)|0;i[a+193>>0]=1;g=a+56|0;pl(g,m,l);h=a+92|0;pl(h,m,o);e=k[n>>2]|0;if(e){f=k[b+4>>2]|0;if(f){if((f|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((f|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(f|0))}}else c=0}else{c=k[b+12>>2]|0;c=(k[c+(k[b+4>>2]<<2)>>2]|0)-(k[c>>2]|0)|0}sl(g,c<<1);f=k[n>>2]|0;if(f){e=k[b+4>>2]|0;if(e){if((e|0)<=-1)Oa(14697,13988,163,14058);c=k[f>>2]|0;if((e|0)!=1){d=1;do{c=(k[f+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(e|0))}}else c=0}else{c=k[b+12>>2]|0;c=(k[c+(k[b+4>>2]<<2)>>2]|0)-(k[c>>2]|0)|0}sl(h,c<<1);pk(a+128|0,o);i[a+1>>0]=1;u=p;return}function Xn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,j=0.0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=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;Ma=u;u=u+112|0;Ha=Ma+32|0;Ga=Ma+16|0;La=Ma+96|0;Ka=Ma+88|0;Ja=Ma+80|0;Ia=Ma+72|0;va=Ma;if(!(i[a+1>>0]|0))Oa(20356,20281,352,17671);ta=k[b+8>>2]|0;Fa=k[b+4>>2]|0;wa=(Fa|0)<(ta|0)?Fa:ta;k[La>>2]=0;ua=La+4|0;k[ua>>2]=0;Ef(La,(ta|0)<(Fa|0)?Fa:ta);c=k[ua>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[La>>2]|0,-1,c<<2|0)|0;k[Ka>>2]=0;pa=Ka+4|0;k[pa>>2]=0;Ef(Ka,Fa);k[Ja>>2]=0;qa=Ja+4|0;k[qa>>2]=0;Ef(Ja,ta);k[Ia>>2]=0;ra=Ia+4|0;k[ra>>2]=0;pk(Ia,ta);h=+p[a+160>>3];Da=a+56|0;Ba=a+84|0;k[Ba>>2]=0;Ca=a+68|0;Ea=a+60|0;iF(k[Ca>>2]|0,0,(k[Ea>>2]<<2)+4|0)|0;c=k[a+72>>2]|0;if(c|0)iF(c|0,0,k[Ea>>2]<<2|0)|0;za=a+92|0;xa=a+120|0;k[xa>>2]=0;ya=a+104|0;Aa=a+96|0;iF(k[ya>>2]|0,0,(k[Aa>>2]<<2)+4|0)|0;c=k[a+108>>2]|0;if(c|0)iF(c|0,0,k[Aa>>2]<<2|0)|0;na=a+20|0;ml(na,b)|0;oa=a+193|0;if(!(i[oa>>0]|0)){e=k[a+140>>2]|0;k[Ha>>2]=0;d=Ha+4|0;k[d>>2]=0;Ef(Ha,e);e=k[d>>2]|0;g=k[Ha>>2]|0;if((e|0)>0){f=k[a+136>>2]|0;c=0;do{k[g+(k[f+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0));e=k[d>>2]|0}f=a+152|0;c=a+156|0;if((k[c>>2]|0)!=(e|0)?(Ng(f,e,1),(k[c>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);c=k[f>>2]|0;if((e|0)>0){d=0;do{k[c+(d<<2)>>2]=k[g+(d<<2)>>2];d=d+1|0}while((d|0)!=(e|0))}d=k[Ha>>2]|0;if(d){Pq(k[d+-4>>2]|0);c=k[f>>2]|0}Rm(na,a+176|0,a+184|0,c)|0;i[oa>>0]=1}d=a+36|0;c=k[d>>2]|0;if(!c){f=k[a+24>>2]|0;c=Oq(f<<2)|0;k[d>>2]=c;if((f|0)>0){e=k[a+32>>2]|0;d=0;do{ma=d;d=d+1|0;k[c+(ma<<2)>>2]=(k[e+(d<<2)>>2]|0)-(k[e+(ma<<2)>>2]|0)}while((d|0)<(f|0))}}f=k[b+12>>2]|0;r=(Fa|0)>0;a:do if(r){g=a+140|0;b=a+32|0;l=a+136|0;e=0;while(1){d=k[g>>2]|0;if(!d)d=e;else{if((d|0)<=(e|0))break;d=k[(k[l>>2]|0)+(e<<2)>>2]|0}ma=f+(e<<2)|0;k[(k[b>>2]|0)+(d<<2)>>2]=k[ma>>2];e=e+1|0;k[c+(d<<2)>>2]=(k[f+(e<<2)>>2]|0)-(k[ma>>2]|0);if((e|0)>=(Fa|0))break a}Oa(16605,15693,425,29764)}while(0);if(i[a+168>>0]|0){b:do if(r){l=a+28|0;m=a+40|0;n=a+32|0;o=k[na+4>>2]|0;q=(c|0)==0;b=0;h=0.0;while(1){if((o|0)<=(b|0)){e=40;break}if((k[l>>2]|0)<=0){e=42;break}g=k[m>>2]|0;d=(k[n>>2]|0)+(b<<2)|0;if(!d){e=44;break}e=k[d>>2]|0;if(!q?(v=c+(b<<2)|0,(v|0)!=0):0)f=(k[v>>2]|0)+e|0;else f=k[d+4>>2]|0;if((e|0)<(f|0)){j=0.0;d=e;do{w=+p[g+(d<<4)>>3];x=+p[g+(d<<4)+8>>3];j=j+(w*w+x*x);d=d+1|0}while((d|0)!=(f|0))}else j=0.0;x=+Q(+j);h=h=(Fa|0)){s=h;break b}}if((e|0)==40)Oa(13577,13744,122,13812);else if((e|0)==42)Oa(16822,16887,19,11478);else if((e|0)==44)while(1)e=44}else s=0.0;while(0);h=+((Fa+ta|0)*20|0)*(s==0.0?1.0:s)*2.220446049250313e-16}ma=a+144|0;Ef(ma,Fa);la=a+148|0;d=k[la>>2]|0;if((d|0)>0){e=k[ma>>2]|0;c=0;do{k[e+(c<<2)>>2]=c;c=c+1|0}while((c|0)!=(d|0))}c=k[ya>>2]|0;d=k[c>>2]|0;if((d|0)!=(k[xa>>2]|0))Oa(16047,15958,414,16152);c=c+4|0;if(k[c>>2]|0)Oa(16161,15958,415,16152);k[c>>2]=d;c:do if(r){M=na+20|0;N=na+24|0;O=na+12|0;R=na+16|0;S=Ga+8|0;T=Fa+-1|0;U=a+176|0;V=a+184|0;W=a+76|0;X=a+80|0;Y=Ga+4|0;Z=Ga+8|0;_=za+4|0;c=a+132|0;d=a+128|0;$=Ga+8|0;aa=za+20|0;ba=za+24|0;ca=za+12|0;da=za+16|0;ea=a+180|0;fa=a+176|0;ga=Ha+8|0;ha=a+188|0;ia=a+184|0;ja=a+112|0;ka=a+116|0;e=0;b=0;d:while(1){I=(b|0)>=(ta|0);H=I^1;J=(wa|0)>(b|0);K=(b|0)<(T|0);while(1){f=k[ua>>2]|0;if((f|0)<=-1){e=64;break d}if(f|0)iF(k[La>>2]|0,-1,f<<2|0)|0;f=k[Ca>>2]|0;g=k[f+(e<<2)>>2]|0;if((g|0)!=(k[Ba>>2]|0)){e=68;break d}L=e+1|0;f=f+(L<<2)|0;if(k[f>>2]|0){e=70;break d}k[f>>2]=g;if((k[ua>>2]|0)<=(b|0)){e=72;break d}k[(k[La>>2]|0)+(b<<2)>>2]=e;if((k[qa>>2]|0)<=0){e=74;break d}k[k[Ja>>2]>>2]=b;f=k[ra>>2]|0;if((f|0)<=-1){e=76;break d}if(f|0)iF(k[Ia>>2]|0,0,f<<4|0)|0;F=k[M>>2]|0;G=k[N>>2]|0;f=k[O>>2]|0;l=k[f+(e<<2)>>2]|0;g=k[R>>2]|0;if(!g)C=k[f+(L<<2)>>2]|0;else C=(k[g+(e<<2)>>2]|0)+l|0;g=(l|0)<(C|0);do if(g|H){D=k[Ia>>2]|0;E=k[Ja>>2]|0;A=0;f=1;B=I;while(1){if(g)y=k[G+(l<<2)>>2]|0;else y=b;B=B|(y|0)==(b|0);if((y|0)<=-1){e=88;break d}if((k[ha>>2]|0)<=(y|0)){e=88;break d}m=k[(k[ia>>2]|0)+(y<<2)>>2]|0;if((m|0)<0){e=92;break d}if((k[ua>>2]|0)<=(m|0)){e=93;break d}o=k[La>>2]|0;q=k[Ka>>2]|0;r=(A|0)>-1;z=A;while(1){n=o+(m<<2)|0;if((k[n>>2]|0)==(e|0))break;if(!(r&(k[pa>>2]|0)>(z|0))){e=96;break d}k[q+(z<<2)>>2]=m;if((k[ua>>2]|0)<=(m|0)){e=98;break d}k[n>>2]=e;if((k[ea>>2]|0)<=(m|0)){e=100;break d}m=k[(k[fa>>2]|0)+(m<<2)>>2]|0;if(!((m|0)>-1?(k[ua>>2]|0)>(m|0):0)){e=93;break d}else z=z+1|0}v=z-A|0;q=(v|0)/2|0;if((v|0)>1){r=k[Ka>>2]|0;o=0;do{m=o+A|0;if((m|0)<=-1){e=107;break d}v=k[pa>>2]|0;if((v|0)<=(m|0)){e=107;break d}m=r+(m<<2)|0;n=z-o|0;if(!((n|0)>0&(v|0)>=(n|0))){e=109;break d}v=r+(n+-1<<2)|0;n=k[m>>2]|0;k[m>>2]=k[v>>2];k[v>>2]=n;o=o+1|0}while((o|0)<(q|0))}m=(k[ra>>2]|0)>(y|0);if(g){if(!m){e=112;break d}v=F+(l<<4)|0;A=D+(y<<4)|0;k[A>>2]=k[v>>2];k[A+4>>2]=k[v+4>>2];k[A+8>>2]=k[v+8>>2];k[A+12>>2]=k[v+12>>2]}else{if(!m){e=115;break d}A=D+(y<<4)|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0}do if((y|0)>(b|0)){if((k[ua>>2]|0)<=(y|0)){e=119;break d}if((k[(k[La>>2]|0)+(y<<2)>>2]|0)==(e|0))break;if(!((f|0)>-1?(k[qa>>2]|0)>(f|0):0)){e=122;break d}k[E+(f<<2)>>2]=y;if((k[ua>>2]|0)<=(y|0)){e=124;break d}k[(k[La>>2]|0)+(y<<2)>>2]=e;f=f+1|0}while(0);l=l+1|0;g=(l|0)<(C|0);if(!(g|B^1))break;else A=z}A=z+-1|0;y=(z|0)>0;if(y)v=A;else{v=f;y=0;r=A;break}while(1){if((k[pa>>2]|0)<=(v|0)){e=130;break d}q=k[(k[Ka>>2]|0)+(v<<2)>>2]|0;k[va>>2]=0;k[va+4>>2]=0;k[va+8>>2]=0;k[va+12>>2]=0;i[Ga>>0]=0;k[Y>>2]=za;k[Z>>2]=q;if((q|0)<=-1){e=133;break d}if((k[_>>2]|0)<=(q|0)){e=133;break d}Yn(Ha,Ga,Ia);k[va>>2]=k[Ha>>2];k[va+4>>2]=k[Ha+4>>2];k[va+8>>2]=k[Ha+8>>2];k[va+12>>2]=k[Ha+12>>2];if((k[c>>2]|0)<=(q|0)){e=135;break d}n=k[d>>2]|0;x=+p[n+(q<<4)+8>>3];p[Ga>>3]=+p[n+(q<<4)>>3];p[$>>3]=x;uk(Ha,va,Ga);k[va>>2]=k[Ha>>2];k[va+4>>2]=k[Ha+4>>2];k[va+8>>2]=k[Ha+8>>2];k[va+12>>2]=k[Ha+12>>2];n=k[aa>>2]|0;o=k[ba>>2]|0;l=k[ca>>2]|0;g=k[l+(q<<2)>>2]|0;m=k[da>>2]|0;if(!m)m=k[l+(q+1<<2)>>2]|0;else m=(k[m+(q<<2)>>2]|0)+g|0;if((g|0)<(m|0))do{uk(Ha,n+(g<<4)|0,va);l=k[o+(g<<2)>>2]|0;if(!((l|0)>-1?(k[ra>>2]|0)>(l|0):0)){e=143;break d}G=k[Ia>>2]|0;F=G+(l<<4)|0;p[F>>3]=+p[F>>3]-+p[Ha>>3];G=G+(l<<4)+8|0;p[G>>3]=+p[G>>3]-+p[ga>>3];g=g+1|0}while((g|0)<(m|0));if((k[pa>>2]|0)<=(v|0)){e=141;break d}g=k[(k[Ka>>2]|0)+(v<<2)>>2]|0;if((g|0)<=-1){e=147;break d}if((k[ea>>2]|0)<=(g|0)){e=147;break d}do if((k[(k[fa>>2]|0)+(g<<2)>>2]|0)==(b|0)){r=k[ba>>2]|0;g=k[ca>>2]|0;m=k[g+(q<<2)>>2]|0;l=k[da>>2]|0;if(!l)n=k[g+(q+1<<2)>>2]|0;else n=(k[l+(q<<2)>>2]|0)+m|0;if((m|0)>=(n|0))break;o=k[La>>2]|0;q=k[Ja>>2]|0;do{g=k[r+(m<<2)>>2]|0;if(!((g|0)>-1?(k[ua>>2]|0)>(g|0):0)){e=155;break d}l=o+(g<<2)|0;if((k[l>>2]|0)!=(e|0)){if(!((f|0)>-1?(k[qa>>2]|0)>(f|0):0)){e=158;break d}k[q+(f<<2)>>2]=g;if((k[ua>>2]|0)<=(g|0)){e=160;break d}k[l>>2]=e;f=f+1|0}m=m+1|0}while((m|0)<(n|0))}while(0);if((v|0)>0)v=v+-1|0;else{v=f;r=A;break}}}else{v=1;y=0;r=-1}while(0);do if(J){do if(!v){j=0.0;t=0.0;x=0.0;g=0}else{if((k[qa>>2]|0)<=0){e=166;break d}f=k[k[Ja>>2]>>2]|0;if(!((f|0)>-1?(k[ra>>2]|0)>(f|0):0)){e=168;break d}g=k[Ia>>2]|0;s=+p[g+(f<<4)>>3];x=+p[g+(f<<4)+8>>3];g=(v|0)>1;if(!g){j=0.0;t=s;g=0;break}m=k[qa>>2]|0;n=k[Ja>>2]|0;o=k[ra>>2]|0;q=k[Ia>>2]|0;l=1;j=0.0;while(1){if((m|0)<=(l|0)){e=173;break d}f=k[n+(l<<2)>>2]|0;if(!((f|0)>-1&(o|0)>(f|0))){e=175;break d}t=+p[q+(f<<4)>>3];w=+p[q+(f<<4)+8>>3];j=j+(t*t+w*w);l=l+1|0;if((l|0)>=(v|0)){t=s;break}}}while(0);if(x==0.0&j==0.0){if((k[qa>>2]|0)<=0){e=178;break d}f=k[k[Ja>>2]>>2]|0;if(!((f|0)>-1?(k[ra>>2]|0)>(f|0):0)){e=180;break d}G=k[Ia>>2]|0;p[G+(f<<4)>>3]=1.0;p[G+(f<<4)+8>>3]=0.0;w=t;t=0.0;j=0.0;break}s=+Q(+(j+(t*t+x*x)));s=!(t>=0.0)?s:-s;if((k[qa>>2]|0)<=0){e=183;break d}f=k[k[Ja>>2]>>2]|0;if(!((f|0)>-1?(k[ra>>2]|0)>(f|0):0)){e=185;break d}G=k[Ia>>2]|0;p[G+(f<<4)>>3]=1.0;p[G+(f<<4)+8>>3]=0.0;if(g){j=t-s;f=1;do{if((k[qa>>2]|0)<=(f|0)){e=189;break d}g=k[(k[Ja>>2]|0)+(f<<2)>>2]|0;if(!((g|0)>-1?(k[ra>>2]|0)>(g|0):0)){e=191;break d}G=(k[Ia>>2]|0)+(g<<4)|0;p[Ga>>3]=j;p[S>>3]=x;tk(Ha,G,Ga);k[G>>2]=k[Ha>>2];k[G+4>>2]=k[Ha+4>>2];k[G+8>>2]=k[Ha+8>>2];k[G+12>>2]=k[Ha+12>>2];f=f+1|0}while((f|0)<(v|0))}w=s;t=(s-t)/s;j=-(-x/s)}else{w=0.0;t=0.0;j=0.0}while(0);if(y){f=r;while(1){if((k[pa>>2]|0)<=(f|0)){e=199;break d}g=k[(k[Ka>>2]|0)+(f<<2)>>2]|0;if((g|0)<(b|0)){if(!((g|0)>-1?(k[ra>>2]|0)>(g|0):0)){e=202;break d}F=k[Ia>>2]|0;E=(k[Ca>>2]|0)+(L<<2)|0;G=k[E>>2]|0;k[E>>2]=G+1;E=k[Ba>>2]|0;ql(W,E+1|0,1.0);F=F+(g<<4)|0;D=(k[W>>2]|0)+(E<<4)|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[(k[X>>2]|0)+(E<<2)>>2]=g;G=(k[W>>2]|0)+(G<<4)|0;k[G>>2]=k[F>>2];k[G+4>>2]=k[F+4>>2];k[G+8>>2]=k[F+8>>2];k[G+12>>2]=k[F+12>>2];if((k[ra>>2]|0)<=(g|0)){e=204;break d}G=(k[Ia>>2]|0)+(g<<4)|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0}if((f|0)>0)f=f+-1|0;else break}}if(J?+P(+w)>=h:0)break;if(K){f=b;do{g=k[la>>2]|0;if((g|0)<=(f|0)){e=232;break d}e=k[ma>>2]|0;l=e+(f<<2)|0;f=f+1|0;if((g|0)<=(f|0)){e=234;break d}G=e+(f<<2)|0;F=k[l>>2]|0;k[l>>2]=k[G>>2];k[G>>2]=F}while((f|0)<(T|0))}else e=k[ma>>2]|0;Rm(na,U,V,e)|0;i[oa>>0]=0;if((L|0)<(Fa|0))e=L;else{e=236;break c}}f=k[Ca>>2]|0;g=f+(L<<2)|0;l=k[g>>2]|0;if((l|0)!=(k[Ba>>2]|0)){e=209;break}if((l|0)!=(k[f+(e<<2)>>2]|0)?(k[(k[X>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){e=212;break}k[g>>2]=l+1;K=k[Ba>>2]|0;ql(W,K+1|0,1.0);J=(k[W>>2]|0)+(K<<4)|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[(k[X>>2]|0)+(K<<2)>>2]=b;K=k[W>>2]|0;p[K+(l<<4)>>3]=w;p[K+(l<<4)+8>>3]=0.0;if((k[c>>2]|0)<=(b|0)){e=214;break}g=k[d>>2]|0;p[g+(b<<4)>>3]=t;p[g+(b<<4)+8>>3]=j;g=b+1|0;if((v|0)>0){e=0;do{if((k[qa>>2]|0)<=(e|0)){e=219;break d}f=k[(k[Ja>>2]|0)+(e<<2)>>2]|0;if(!((f|0)>-1?(k[ra>>2]|0)>(f|0):0)){e=221;break d}J=k[Ia>>2]|0;I=(k[ya>>2]|0)+(g<<2)|0;K=k[I>>2]|0;k[I>>2]=K+1;I=k[xa>>2]|0;ql(ja,I+1|0,1.0);J=J+(f<<4)|0;H=(k[ja>>2]|0)+(I<<4)|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[(k[ka>>2]|0)+(I<<2)>>2]=f;K=(k[ja>>2]|0)+(K<<4)|0;k[K>>2]=k[J>>2];k[K+4>>2]=k[J+4>>2];k[K+8>>2]=k[J+8>>2];k[K+12>>2]=k[J+12>>2];if((k[ra>>2]|0)<=(f|0)){e=223;break d}K=(k[Ia>>2]|0)+(f<<4)|0;e=e+1|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0}while((e|0)<(v|0))}if((g|0)<(wa|0)){e=k[ya>>2]|0;f=k[e+(g<<2)>>2]|0;if((f|0)!=(k[xa>>2]|0)){e=226;break}e=e+(b+2<<2)|0;if(k[e>>2]|0){e=228;break}k[e>>2]=f}if((L|0)<(Fa|0)){e=L;b=g}else{b=g;e=236;break c}}switch(e|0){case 64:{Oa(11919,12068,74,12145);break}case 68:{Oa(16047,15958,414,16152);break}case 70:{Oa(16161,15958,415,16152);break}case 72:{Oa(16605,15693,425,29764);break}case 74:{Oa(16605,15693,425,29764);break}case 76:{Oa(11919,12068,74,12145);break}case 88:{Oa(16605,15693,425,29764);break}case 92:{TA(a+8|0,20427)|0;sa=3;break c}case 93:{Oa(16605,15693,425,29764);break}case 96:{Oa(16605,15693,425,29764);break}case 98:{Oa(16605,15693,425,29764);break}case 100:{Oa(16605,15693,425,29764);break}case 107:{Oa(16605,15693,425,29764);break}case 109:{Oa(16605,15693,425,29764);break}case 112:{Oa(16605,15693,425,29764);break}case 115:{Oa(16605,15693,425,29764);break}case 119:{Oa(16605,15693,425,29764);break}case 122:{Oa(16605,15693,425,29764);break}case 124:{Oa(16605,15693,425,29764);break}case 130:{Oa(16605,15693,425,29764);break}case 133:{Oa(13577,13744,122,13812);break}case 135:{Oa(16605,15693,425,29764);break}case 141:{Oa(16605,15693,425,29764);break}case 143:{Oa(16605,15693,425,29764);break}case 147:{Oa(16605,15693,425,29764);break}case 155:{Oa(16605,15693,425,29764);break}case 158:{Oa(16605,15693,425,29764);break}case 160:{Oa(16605,15693,425,29764);break}case 166:{Oa(16605,15693,425,29764);break}case 168:{Oa(16605,15693,425,29764);break}case 173:{Oa(16605,15693,425,29764);break}case 175:{Oa(16605,15693,425,29764);break}case 178:{Oa(16605,15693,425,29764);break}case 180:{Oa(16605,15693,425,29764);break}case 183:{Oa(16605,15693,425,29764);break}case 185:{Oa(16605,15693,425,29764);break}case 189:{Oa(16605,15693,425,29764);break}case 191:{Oa(16605,15693,425,29764);break}case 199:{Oa(16605,15693,425,29764);break}case 202:{Oa(16605,15693,425,29764);break}case 204:{Oa(16605,15693,425,29764);break}case 209:{Oa(16249,15958,392,16348);break}case 212:{Oa(16371,15958,393,16348);break}case 214:{Oa(16605,15693,425,29764);break}case 219:{Oa(16605,15693,425,29764);break}case 221:{Oa(16605,15693,425,29764);break}case 223:{Oa(16605,15693,425,29764);break}case 226:{Oa(16047,15958,414,16152);break}case 228:{Oa(16161,15958,415,16152);break}case 232:{Oa(16605,15693,425,29764);break}case 234:{Oa(16605,15693,408,29907);break}}}else{b=0;d=a+128|0;c=a+132|0;e=236}while(0);if((e|0)==236){f=wa-b|0;e=(k[c>>2]|0)-f|0;c=(k[d>>2]|0)+(e<<4)|0;d=(f|0)>-1;if(!(d|(c|0)==0))Oa(13818,13988,175,14058);if((e|f|0)<0)Oa(14177,13744,147,13812);if(!d)Oa(11919,12068,74,12145);if(f|0)iF(c|0,0,f<<4|0)|0;do if(!(k[za+16>>2]|0)){g=k[xa>>2]|0;e=k[Aa>>2]|0;if((e|0)<=-1)break;f=k[ya>>2]|0;c=e;while(1){if(k[f+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0))break;do{c=c+1|0;k[f+(c<<2)>>2]=g}while((c|0)<(k[Aa>>2]|0))}while(0);nm(za);do if(!(k[Da+16>>2]|0)){g=k[Ba>>2]|0;e=k[Ea>>2]|0;if((e|0)<=-1)break;f=k[Ca>>2]|0;c=e;while(1){if(k[f+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0))break;do{c=c+1|0;k[f+(c<<2)>>2]=g}while((c|0)<(k[Ea>>2]|0))}while(0);nm(Da);i[a+192>>0]=0;k[a+172>>2]=b;if((b|0)<(Fa|0)){i[Ha>>0]=0;Fa=Ha+4|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[Fa+16>>2]=0;k[Fa+20>>2]=0;k[Fa+24>>2]=0;k[Fa+28>>2]=0;ml(Ha,Da)|0;i[Ga>>0]=0;k[Ga+4>>2]=Ha;k[Ga+8>>2]=ma;if((k[Ha+4>>2]|0)!=(k[la>>2]|0))Oa(14710,14850,97,14920);Zn(Da,Ga)|0;d=a+152|0;ji(Ga,0,d,ma);e=k[Ga>>2]|0;f=k[Ga+4>>2]|0;c=a+156|0;do if((k[c>>2]|0)!=(f|0)){Ng(d,f,1);if((k[c>>2]|0)==(f|0))break;Oa(12160,12207,721,12285)}while(0);d=k[d>>2]|0;if((f|0)>0){c=0;do{k[d+(c<<2)>>2]=k[e+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[Ga>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);Pq(k[Ha+12>>2]|0);Pq(k[Ha+16>>2]|0);c=k[Ha+20>>2]|0;if(c|0)FA(c);c=k[Ha+24>>2]|0;if(c|0)FA(c)}i[a>>0]=1;i[a+2>>0]=1;sa=0}k[a+4>>2]=sa;c=k[Ia>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[Ja>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[Ka>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[La>>2]|0;if(!c){u=Ma;return}Pq(k[c+-4>>2]|0);u=Ma;return}function Yn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0.0;q=u;u=u+32|0;n=q+16|0;o=q;h=k[b+4>>2]|0;d=k[h+8>>2]|0;if((d|0)!=(k[c+4>>2]|0))Oa(20474,20497,26,20575);if((d|0)<=0)Oa(20579,20497,27,20575);l=k[h+20>>2]|0;m=k[h+24>>2]|0;b=k[b+8>>2]|0;e=(k[h+12>>2]|0)+(b<<2)|0;if(!e)while(1){}j=k[e>>2]|0;d=k[h+16>>2]|0;if((d|0)!=0?(i=d+(b<<2)|0,(i|0)!=0):0)b=(k[i>>2]|0)+j|0;else b=k[e+4>>2]|0;e=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;if((j|0)>=(b|0)){u=q;return}h=o+8|0;i=n+8|0;d=j;f=0.0;g=0.0;do{r=-+p[l+(d<<4)+8>>3];p[o>>3]=+p[l+(d<<4)>>3];p[h>>3]=r;uk(n,o,(k[c>>2]|0)+(k[m+(d<<2)>>2]<<4)|0);f=+p[n>>3]+f;p[a>>3]=f;g=+p[i>>3]+g;p[e>>3]=g;d=d+1|0}while((d|0)<(b|0));u=q;return}function Zn(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(pl(a,k[(k[b+4>>2]|0)+8>>2]|0,k[(k[b+8>>2]|0)+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}_n(a,b);return a|0}function _n(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+128|0;A=B+56|0;z=B+16|0;r=B;$n(A,b);f=b+8|0;y=k[(k[f>>2]|0)+4>>2]|0;if(!(i[b>>0]|0)){e=b+4|0;q=k[(k[e>>2]|0)+8>>2]|0;i[z>>0]=0;v=z+4|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[v+16>>2]=0;k[v+20>>2]=0;k[v+24>>2]=0;k[v+28>>2]=0;k[z+8>>2]=q;q=z+28|0;k[q>>2]=0;c=Oq((y<<2)+4|0)|0;k[z+12>>2]=c;if(!c){B=Kb(4)|0;cF(B);Cc(B|0,2032,79)}k[v>>2]=y;t=z+16|0;b=k[t>>2]|0;if(!b){s=z+12|0;p=s;d=y;b=c}else{Pq(b);k[t>>2]=0;b=z+12|0;p=b;s=b;d=k[v>>2]|0;b=k[b>>2]|0}iF(b|0,0,(d<<2)+4|0)|0;o=k[(k[e>>2]|0)+8>>2]|0;n=k[(k[f>>2]|0)+4>>2]|0;sl(z,((o|0)<(n|0)?n:o)<<1);a:do if((y|0)>0){o=z+20|0;n=z+24|0;l=0;b:while(1){f=k[p>>2]|0;d=k[f+(l<<2)>>2]|0;if((d|0)!=(k[q>>2]|0)){b=45;break}m=l;l=l+1|0;b=f+(l<<2)|0;if(k[b>>2]|0){b=47;break}k[b>>2]=d;c=k[A>>2]|0;h=k[c+20>>2]|0;j=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(m<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+e|0;c:do if((e|0)<(g|0)){c=h+(e<<4)|0;k[r>>2]=k[c>>2];k[r+4>>2]=k[c+4>>2];k[r+8>>2]=k[c+8>>2];k[r+12>>2]=k[c+12>>2];if((d|0)!=(k[q>>2]|0)){b=53;break b}while(1){b=k[j+(e<<2)>>2]|0;c=f+(l<<2)|0;if((d|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(d+-1<<2)>>2]|0)>=(b|0):0){b=56;break b}k[c>>2]=d+1;f=k[q>>2]|0;ql(o,f+1|0,1.0);c=(k[o>>2]|0)+(f<<4)|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[(k[n>>2]|0)+(f<<2)>>2]=b;f=(k[o>>2]|0)+(d<<4)|0;k[f>>2]=k[r>>2];k[f+4>>2]=k[r+4>>2];k[f+8>>2]=k[r+8>>2];k[f+12>>2]=k[r+12>>2];e=e+1|0;if((e|0)>=(g|0))break c;f=k[p>>2]|0;d=k[f+(l<<2)>>2]|0;c=h+(e<<4)|0;k[r>>2]=k[c>>2];k[r+4>>2]=k[c+4>>2];k[r+8>>2]=k[c+8>>2];k[r+12>>2]=k[c+12>>2];if((d|0)!=(k[q>>2]|0)){b=53;break b}}}while(0);if((l|0)>=(y|0))break a}if((b|0)==45)Oa(16047,15958,414,16152);else if((b|0)==47)Oa(16161,15958,415,16152);else if((b|0)==53)Oa(16249,15958,392,16348);else if((b|0)==56)Oa(16371,15958,393,16348)}while(0);if((k[z+16>>2]|0)==0?(x=k[q>>2]|0,w=k[v>>2]|0,(w|0)>-1):0){d=k[p>>2]|0;b=w;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(w|0))do{b=b+1|0;k[d+(b<<2)>>2]=x}while((b|0)<(k[v>>2]|0))}i[z>>0]=1;ml(a,z)|0;Pq(k[s>>2]|0);Pq(k[t>>2]|0);b=k[z+20>>2]|0;if(b|0)FA(b);b=k[z+24>>2]|0;if(b|0)FA(b)}else{b=b+4|0;pl(a,k[(k[b>>2]|0)+8>>2]|0,y);p=a+28|0;k[p>>2]=0;q=a+12|0;r=a+4|0;iF(k[q>>2]|0,0,(k[r>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[r>>2]<<2|0)|0;x=k[(k[b>>2]|0)+8>>2]|0;w=k[(k[f>>2]|0)+4>>2]|0;sl(a,((x|0)<(w|0)?w:x)<<1);d:do if((y|0)>0){o=a+20|0;n=a+24|0;l=0;e:while(1){f=k[q>>2]|0;d=k[f+(l<<2)>>2]|0;if((d|0)!=(k[p>>2]|0)){b=15;break}m=l;l=l+1|0;b=f+(l<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=d;c=k[A>>2]|0;h=k[c+20>>2]|0;j=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(m<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+e|0;f:do if((e|0)<(g|0)){x=h+(e<<4)|0;k[z>>2]=k[x>>2];k[z+4>>2]=k[x+4>>2];k[z+8>>2]=k[x+8>>2];k[z+12>>2]=k[x+12>>2];if((d|0)!=(k[p>>2]|0)){b=23;break e}while(1){b=k[j+(e<<2)>>2]|0;c=f+(l<<2)|0;if((d|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(d+-1<<2)>>2]|0)>=(b|0):0){b=26;break e}k[c>>2]=d+1;x=k[p>>2]|0;ql(o,x+1|0,1.0);w=(k[o>>2]|0)+(x<<4)|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[(k[n>>2]|0)+(x<<2)>>2]=b;x=(k[o>>2]|0)+(d<<4)|0;k[x>>2]=k[z>>2];k[x+4>>2]=k[z+4>>2];k[x+8>>2]=k[z+8>>2];k[x+12>>2]=k[z+12>>2];e=e+1|0;if((e|0)>=(g|0))break f;f=k[q>>2]|0;d=k[f+(l<<2)>>2]|0;x=h+(e<<4)|0;k[z>>2]=k[x>>2];k[z+4>>2]=k[x+4>>2];k[z+8>>2]=k[x+8>>2];k[z+12>>2]=k[x+12>>2];if((d|0)!=(k[p>>2]|0)){b=23;break e}}}while(0);if((l|0)>=(y|0))break d}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if((k[a+16>>2]|0)==0?(t=k[p>>2]|0,s=k[r>>2]|0,(s|0)>-1):0){d=k[q>>2]|0;b=s;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(s|0))do{b=b+1|0;k[d+(b<<2)>>2]=t}while((b|0)<(k[r>>2]|0))}}Pq(k[A+36>>2]|0);Pq(k[A+40>>2]|0);b=k[A+44>>2]|0;if(b|0)FA(b);b=k[A+48>>2]|0;if(!b){u=B;return}FA(b);u=B;return}function $n(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;e=a+8|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;d=a+24|0;c=b+4|0;g=k[(k[c>>2]|0)+8>>2]|0;b=b+8|0;f=k[(k[b>>2]|0)+4>>2]|0;i[d>>0]=0;h=a+28|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+28>>2]=0;pl(d,g,f);k[a>>2]=d;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;ao(d,k[b>>2]|0,k[c>>2]|0);return}function ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+48|0;v=w+8|0;s=w;e=k[c+8>>2]|0;t=c+4|0;f=k[t>>2]|0;i[v>>0]=0;d=v+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[v+8>>2]=e;k[v+28>>2]=0;e=Oq((f<<2)+4|0)|0;k[v+12>>2]=e;if(!e){w=Kb(4)|0;cF(w);Cc(w|0,2032,79)}k[d>>2]=f;q=v+16|0;p=k[t>>2]|0;r=v+12|0;iF(e|0,0,(f<<2)+4|0)|0;k[s>>2]=0;h=s+4|0;k[h>>2]=0;Ef(s,p);e=k[t>>2]|0;a:do if((e|0)>0){j=k[b>>2]|0;l=k[c+12>>2]|0;g=k[c+16>>2]|0;m=k[s>>2]|0;b:do if(!g){f=0;while(1){d=k[j+(f<<2)>>2]|0;if(!((d|0)>-1&(e|0)>(d|0))){d=12;break}d=l+(d<<2)|0;if(!d)break b;if((k[h>>2]|0)<=(f|0)){d=19;break}k[m+(f<<2)>>2]=(k[d+4>>2]|0)-(k[d>>2]|0);f=f+1|0;e=k[t>>2]|0;if((f|0)>=(e|0))break a}if((d|0)==12)Oa(13577,13744,122,13812);else if((d|0)==19)Oa(16605,15693,408,29907)}else{f=0;while(1){d=k[j+(f<<2)>>2]|0;if(!((d|0)>-1&(e|0)>(d|0))){d=12;break}e=l+(d<<2)|0;if(!e)break b;d=g+(d<<2)|0;if(!d)d=(k[e+4>>2]|0)-(k[e>>2]|0)|0;else d=k[d>>2]|0;if((k[h>>2]|0)<=(f|0)){d=19;break}k[m+(f<<2)>>2]=d;f=f+1|0;e=k[t>>2]|0;if((f|0)>=(e|0))break a}if((d|0)==12)Oa(13577,13744,122,13812);else if((d|0)==19)Oa(16605,15693,408,29907)}while(0);while(1){}}while(0);bo(v,s);d=k[t>>2]|0;if((d|0)>0){n=c+20|0;o=c+24|0;p=c+12|0;c=c+16|0;m=0;do{e=k[(k[b>>2]|0)+(m<<2)>>2]|0;j=k[n>>2]|0;l=k[o>>2]|0;f=k[p>>2]|0;h=k[f+(e<<2)>>2]|0;g=k[c>>2]|0;if(!g)e=k[f+(e+1<<2)>>2]|0;else e=(k[g+(e<<2)>>2]|0)+h|0;if((h|0)<(e|0)){d=h;do{h=co(v,k[l+(d<<2)>>2]|0,m)|0;g=j+(d<<4)|0;k[h>>2]=k[g>>2];k[h+4>>2]=k[g+4>>2];k[h+8>>2]=k[g+8>>2];k[h+12>>2]=k[g+12>>2];d=d+1|0}while((d|0)<(e|0));d=k[t>>2]|0}m=m+1|0}while((m|0)<(d|0))}ml(a,v)|0;d=k[s>>2]|0;if(d|0)Pq(k[d+-4>>2]|0);Pq(k[r>>2]|0);Pq(k[q>>2]|0);d=k[v+20>>2]|0;if(d|0)FA(d);d=k[v+24>>2]|0;if(!d){u=w;return}FA(d);u=w;return}function bo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=k[a+16>>2]|0;s=a+4|0;n=k[s>>2]|0;c=n<<2;if(l|0){p=Oq(c+4|0)|0;q=p;if(!p){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}a:do if((n|0)>0){i=k[a+12>>2]|0;j=k[b>>2]|0;h=k[b+4>>2]|0;g=0;c=0;while(1){k[p+(g<<2)>>2]=c;d=g;g=g+1|0;e=k[l+(d<<2)>>2]|0;f=(k[i+(g<<2)>>2]|0)-(k[i+(d<<2)>>2]|0)-e|0;if((h|0)<=(d|0))break;b=k[j+(d<<2)>>2]|0;c=e+c+((b|0)<(f|0)?f:b)|0;if((g|0)>=(n|0)){m=c;break a}}Oa(16605,15693,162,29907)}else m=0;while(0);k[p+(n<<2)>>2]=m;o=a+20|0;ql(o,m,0.0);c=k[s>>2]|0;m=a+12|0;if((c|0)>0){n=a+16|0;l=a+24|0;do{h=c;c=c+-1|0;j=p+(c<<2)|0;f=k[j>>2]|0;d=k[m>>2]|0;e=k[d+(c<<2)>>2]|0;b:do if((f|0)>(e|0)?(r=k[(k[n>>2]|0)+(c<<2)>>2]|0,(r|0)>0):0){i=r;g=e;while(1){e=i+-1|0;s=k[l>>2]|0;k[s+(f+e<<2)>>2]=k[s+(g+e<<2)>>2];s=k[o>>2]|0;b=s+((k[d+(c<<2)>>2]|0)+e<<4)|0;s=s+((k[j>>2]|0)+e<<4)|0;k[s>>2]=k[b>>2];k[s+4>>2]=k[b+4>>2];k[s+8>>2]=k[b+8>>2];k[s+12>>2]=k[b+12>>2];if((i|0)<=1)break b;g=k[m>>2]|0;i=e;d=g;g=k[g+(c<<2)>>2]|0;f=k[j>>2]|0}}while(0)}while((h|0)>1)}s=k[m>>2]|0;k[m>>2]=q;Pq(s);return}o=Oq(c)|0;p=a+16|0;k[p>>2]=o;if(!o){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}c:do if((n|0)>0){f=b+4|0;g=k[b>>2]|0;h=a+12|0;d=0;c=0;e=0;while(1){k[o+(d<<2)>>2]=e;if((k[f>>2]|0)<=(d|0))break;r=k[g+(d<<2)>>2]|0;n=k[h>>2]|0;q=d;d=d+1|0;e=r+e+(k[n+(d<<2)>>2]|0)-(k[n+(q<<2)>>2]|0)|0;c=r+c|0;if((d|0)>=(k[s>>2]|0)){i=c;break c}}Oa(16605,15693,162,29907)}else i=0;while(0);n=a+20|0;c=k[a+28>>2]|0;h=c+i|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(j|0,0,h<<4|0)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[n>>2]|0;nF(j|0,g|0,c<<4|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[n>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[n>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}m=a+12|0;c=k[s>>2]|0;e=k[m>>2]|0;if((c|0)>0){l=a+24|0;d=k[e+(c<<2)>>2]|0;j=c;do{i=j;j=j+-1|0;f=e+(j<<2)|0;c=k[f>>2]|0;h=d-c|0;g=o+(j<<2)|0;if((h|0)>0){d=h;do{a=d;d=d+-1|0;f=k[l>>2]|0;k[f+((k[g>>2]|0)+d<<2)>>2]=k[f+(c+d<<2)>>2];c=k[n>>2]|0;f=c+((k[e+(j<<2)>>2]|0)+d<<4)|0;e=c+((k[g>>2]|0)+d<<4)|0;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];k[e+8>>2]=k[f+8>>2];k[e+12>>2]=k[f+12>>2];e=k[m>>2]|0;f=e+(j<<2)|0;c=k[f>>2]|0}while((a|0)>1);d=c;c=f}else{d=c;c=f}k[c>>2]=k[g>>2];c=k[p>>2]|0;k[c+(j<<2)>>2]=h}while((i|0)>1);f=k[s>>2]|0}else{f=c;c=k[p>>2]|0}d=f+-1|0;c=(k[c+(d<<2)>>2]|0)+(k[e+(d<<2)>>2]|0)|0;if((f|0)<=0)Oa(16605,15693,162,29907);if((k[b+4>>2]|0)<(f|0))Oa(16605,15693,162,29907);k[e+(f<<2)>>2]=c+(k[(k[b>>2]|0)+(d<<2)>>2]|0);ql(n,k[e+(k[s>>2]<<2)>>2]|0,0.0);return}function co(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;p=t;if((b|0)<=-1)Oa(20638,15958,1131,20683);h=k[a+8>>2]|0;if(!((c|0)>-1&(h|0)>(b|0)))Oa(20638,15958,1131,20683);s=a+4|0;e=k[s>>2]|0;if((e|0)<=(c|0))Oa(20638,15958,1131,20683);f=k[a+16>>2]|0;a:do if(!f){g=k[a+12>>2]|0;if((k[g+(e<<2)>>2]|0)!=(k[g>>2]|0)){f=Oq(e<<2)|0;k[a+16>>2]=f;if(!f){t=Kb(4)|0;cF(t);Cc(t|0,2032,79)}if((e|0)>0)e=0;else break;while(1){r=e;e=e+1|0;k[f+(r<<2)>>2]=(k[g+(e<<2)>>2]|0)-(k[g+(r<<2)>>2]|0);if((e|0)>=(k[s>>2]|0))break a}}m=a+20|0;n=a+32|0;if((k[n>>2]|0)==0?(i=k[a+28>>2]|0,o=i+(h<<1)|0,(o|0)>0):0){j=DA(o>>>0>268435455?-1:o<<4)|0;iF(j|0,0,o<<4|0)|0;l=DA(o>>>0>1073741823?-1:o<<2)|0;e=(i|0)<(o|0)?i:o;if((e|0)>0){i=k[m>>2]|0;nF(j|0,i|0,e<<4|0)|0;f=a+24|0;g=k[f>>2]|0;nF(l|0,g|0,e<<2|0)|0;e=f;f=g;h=i}else{i=k[m>>2]|0;e=a+24|0;g=k[e>>2]|0;f=g;h=i}k[m>>2]=j;k[e>>2]=l;k[n>>2]=o;if(f|0)FA(g);if(h|0)FA(i)}f=k[s>>2]|0;e=f<<2;h=Oq(e)|0;k[a+16>>2]=h;if(!h){t=Kb(4)|0;cF(t);Cc(t|0,2032,79)}iF(h|0,0,e|0)|0;g=k[n>>2]|0;if((f|0)<1)f=h;else{f=k[a+12>>2]|0;e=1;while(1){k[f+(e<<2)>>2]=g;if((e|0)<(k[s>>2]|0))e=e+1|0;else{f=h;break}}}}while(0);r=a+20|0;l=a+32|0;o=k[l>>2]|0;n=a+12|0;h=k[n>>2]|0;i=k[h+(c<<2)>>2]|0;if((i|0)==(o|0)){g=a+28|0;i=k[g>>2]|0;e=c;while(1){if(k[f+(e<<2)>>2]|0)break;k[h+(e<<2)>>2]=i;if((e|0)>0)e=e+-1|0;else break}q=f+(c<<2)|0;k[q>>2]=(k[q>>2]|0)+1;g=k[g>>2]|0;ql(r,g+1|0,1.0);q=(k[r>>2]|0)+(g<<4)|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[(k[a+24>>2]|0)+(g<<2)>>2]=b;g=k[l>>2]|0;if((o|0)!=(g|0)?(d=k[s>>2]|0,(d|0)>(c|0)):0){f=k[n>>2]|0;do{c=c+1|0;e=f+(c<<2)|0;if((k[e>>2]|0)==(o|0)){k[e>>2]=g;d=k[s>>2]|0}}while((c|0)<(d|0))}b=(k[r>>2]|0)+(i<<4)|0;u=t;return b|0}j=c+1|0;if((k[h+(j<<2)>>2]|0)==(o|0)){m=a+16|0;e=f+(c<<2)|0;f=k[e>>2]|0;g=a+28|0;d=k[g>>2]|0;if((f+i|0)==(d|0)){k[e>>2]=f+1;ql(r,(k[g>>2]|0)+1|0,0.0);g=k[l>>2]|0;if((o|0)!=(g|0)?(q=k[s>>2]|0,(q|0)>(c|0)):0){h=k[n>>2]|0;f=j;d=q;while(1){e=h+(f<<2)|0;if((k[e>>2]|0)==(o|0)){k[e>>2]=g;d=k[s>>2]|0}if((f|0)<(d|0))f=f+1|0;else break}}h=k[(k[n>>2]|0)+(c<<2)>>2]|0;e=(k[(k[m>>2]|0)+(c<<2)>>2]|0)+h|0;d=e+-1|0;g=a+24|0;b:do if((d|0)>(h|0)){f=d;while(1){d=e+-2|0;e=k[g>>2]|0;c=k[e+(d<<2)>>2]|0;if((c|0)<=(b|0)){d=f;break b}k[e+(f<<2)>>2]=c;a=k[r>>2]|0;s=a+(d<<4)|0;d=a+(f<<4)|0;k[d>>2]=k[s>>2];k[d+4>>2]=k[s+4>>2];k[d+8>>2]=k[s+8>>2];k[d+12>>2]=k[s+12>>2];d=f+-1|0;if((d|0)>(h|0)){e=f;f=d}else break}}while(0);k[(k[g>>2]|0)+(d<<2)>>2]=b;b=(k[r>>2]|0)+(d<<4)|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;u=t;return b|0}}else d=k[a+28>>2]|0;do if((d|0)!=(o|0)){ql(r,o,0.0);s=k[s>>2]|0;k[p>>2]=s;k[p+8>>2]=2;if((s|0)>-1){eo(a,p);break}else Oa(11919,12068,74,12145)}while(0);b=fo(a,b,c)|0;u=t;return b|0}function eo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=k[a+16>>2]|0;s=a+4|0;m=k[s>>2]|0;c=m<<2;if(j|0){p=Oq(c+4|0)|0;q=p;if(!p){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}a:do if((m|0)>0){h=k[a+12>>2]|0;i=b+8|0;g=k[b>>2]|0;f=0;c=0;while(1){k[p+(f<<2)>>2]=c;b=f;f=f+1|0;d=k[j+(b<<2)>>2]|0;e=(k[h+(f<<2)>>2]|0)-(k[h+(b<<2)>>2]|0)-d|0;if((g|0)<=(b|0))break;b=k[i>>2]|0;c=d+c+((b|0)<(e|0)?e:b)|0;if((f|0)>=(m|0)){l=c;break a}}Oa(16605,15693,162,29907)}else l=0;while(0);k[p+(m<<2)>>2]=l;o=a+20|0;ql(o,l,0.0);c=k[s>>2]|0;m=a+12|0;if((c|0)>0){n=a+16|0;l=a+24|0;do{h=c;c=c+-1|0;j=p+(c<<2)|0;f=k[j>>2]|0;d=k[m>>2]|0;e=k[d+(c<<2)>>2]|0;b:do if((f|0)>(e|0)?(r=k[(k[n>>2]|0)+(c<<2)>>2]|0,(r|0)>0):0){i=r;g=e;while(1){e=i+-1|0;s=k[l>>2]|0;k[s+(f+e<<2)>>2]=k[s+(g+e<<2)>>2];s=k[o>>2]|0;b=s+((k[d+(c<<2)>>2]|0)+e<<4)|0;s=s+((k[j>>2]|0)+e<<4)|0;k[s>>2]=k[b>>2];k[s+4>>2]=k[b+4>>2];k[s+8>>2]=k[b+8>>2];k[s+12>>2]=k[b+12>>2];if((i|0)<=1)break b;g=k[m>>2]|0;i=e;d=g;g=k[g+(c<<2)>>2]|0;f=k[j>>2]|0}}while(0)}while((h|0)>1)}s=k[m>>2]|0;k[m>>2]=q;Pq(s);return}o=Oq(c)|0;p=a+16|0;k[p>>2]=o;if(!o){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}c:do if((m|0)>0){f=b+8|0;g=a+12|0;d=0;c=0;e=0;while(1){k[o+(d<<2)>>2]=e;if((k[b>>2]|0)<=(d|0))break;r=k[f>>2]|0;n=k[g>>2]|0;q=d;d=d+1|0;e=r+e+(k[n+(d<<2)>>2]|0)-(k[n+(q<<2)>>2]|0)|0;c=r+c|0;if((d|0)>=(k[s>>2]|0)){h=c;break c}}Oa(16605,15693,162,29907)}else h=0;while(0);n=a+20|0;c=k[a+28>>2]|0;h=c+h|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(j|0,0,h<<4|0)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[n>>2]|0;nF(j|0,g|0,c<<4|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[n>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[n>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}m=a+12|0;c=k[s>>2]|0;d=k[m>>2]|0;if((c|0)>0){l=a+24|0;e=k[d+(c<<2)>>2]|0;j=c;do{i=j;j=j+-1|0;f=d+(j<<2)|0;c=k[f>>2]|0;h=e-c|0;g=o+(j<<2)|0;if((h|0)>0){e=h;do{a=e;e=e+-1|0;f=k[l>>2]|0;k[f+((k[g>>2]|0)+e<<2)>>2]=k[f+(c+e<<2)>>2];c=k[n>>2]|0;f=c+((k[d+(j<<2)>>2]|0)+e<<4)|0;d=c+((k[g>>2]|0)+e<<4)|0;k[d>>2]=k[f>>2];k[d+4>>2]=k[f+4>>2];k[d+8>>2]=k[f+8>>2];k[d+12>>2]=k[f+12>>2];d=k[m>>2]|0;f=d+(j<<2)|0;c=k[f>>2]|0}while((a|0)>1);e=c;c=f}else{e=c;c=f}k[c>>2]=k[g>>2];c=k[p>>2]|0;k[c+(j<<2)>>2]=h}while((i|0)>1);e=k[s>>2]|0}else{e=c;c=k[p>>2]|0}a=e+-1|0;c=(k[c+(a<<2)>>2]|0)+(k[d+(a<<2)>>2]|0)|0;if((e|0)<=0)Oa(16605,15693,162,29907);if((k[b>>2]|0)<(e|0))Oa(16605,15693,162,29907);k[d+(e<<2)>>2]=c+(k[b+8>>2]|0);ql(n,k[d+(k[s>>2]<<2)>>2]|0,0.0);return}function fo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=u;u=u+16|0;e=m;d=k[a+16>>2]|0;if(!d)Oa(16634,15958,1251,20690);g=a+12|0;i=k[g>>2]|0;f=k[i+(c<<2)>>2]|0;l=a+16|0;d=k[d+(c<<2)>>2]|0;if((d|0)>=((k[i+(c+1<<2)>>2]|0)-f|0)){k[e>>2]=c;k[e+4>>2]=(d|0)>2?d:2;go(a,e);d=k[(k[l>>2]|0)+(c<<2)>>2]|0;f=k[(k[g>>2]|0)+(c<<2)>>2]|0}e=d+f|0;i=a+24|0;h=a+20|0;a:do if((d|0)>0){while(1){d=e+-1|0;g=k[i>>2]|0;a=k[g+(d<<2)>>2]|0;if((a|0)<=(b|0))break;k[g+(e<<2)>>2]=a;a=k[h>>2]|0;g=a+(d<<4)|0;a=a+(e<<4)|0;k[a>>2]=k[g>>2];k[a+4>>2]=k[g+4>>2];k[a+8>>2]=k[g+8>>2];k[a+12>>2]=k[g+12>>2];if((d|0)>(f|0))e=d;else{j=d;break a}}if((a|0)==(b|0))Oa(20709,15958,1272,20690);else j=e}else j=e;while(0);c=(k[l>>2]|0)+(c<<2)|0;k[c>>2]=(k[c>>2]|0)+1;k[(k[i>>2]|0)+(j<<2)>>2]=b;c=(k[h>>2]|0)+(j<<4)|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;u=m;return c|0}function go(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=k[a+16>>2]|0;s=a+4|0;i=k[s>>2]|0;c=i<<2;if(h|0){p=Oq(c+4|0)|0;q=p;if(!p){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}if((i|0)>0){f=k[a+12>>2]|0;g=k[b>>2]|0;e=k[b+4>>2]|0;d=0;c=0;do{k[p+(d<<2)>>2]=c;b=d;d=d+1|0;n=k[h+(b<<2)>>2]|0;o=(k[f+(d<<2)>>2]|0)-(k[f+(b<<2)>>2]|0)-n|0;b=(g|0)==(b|0)?e:0;c=n+c+((b|0)<(o|0)?o:b)|0}while((d|0)<(i|0))}else c=0;k[p+(i<<2)>>2]=c;o=a+20|0;ql(o,c,0.0);c=k[s>>2]|0;m=a+12|0;if((c|0)>0){n=a+16|0;l=a+24|0;do{h=c;c=c+-1|0;j=p+(c<<2)|0;f=k[j>>2]|0;d=k[m>>2]|0;e=k[d+(c<<2)>>2]|0;a:do if((f|0)>(e|0)?(r=k[(k[n>>2]|0)+(c<<2)>>2]|0,(r|0)>0):0){i=r;g=e;while(1){e=i+-1|0;s=k[l>>2]|0;k[s+(f+e<<2)>>2]=k[s+(g+e<<2)>>2];s=k[o>>2]|0;b=s+((k[d+(c<<2)>>2]|0)+e<<4)|0;s=s+((k[j>>2]|0)+e<<4)|0;k[s>>2]=k[b>>2];k[s+4>>2]=k[b+4>>2];k[s+8>>2]=k[b+8>>2];k[s+12>>2]=k[b+12>>2];if((i|0)<=1)break a;g=k[m>>2]|0;i=e;d=g;g=k[g+(c<<2)>>2]|0;f=k[j>>2]|0}}while(0)}while((h|0)>1)}s=k[m>>2]|0;k[m>>2]=q;Pq(s);return}o=Oq(c)|0;p=a+16|0;k[p>>2]=o;if(!o){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}if((i|0)>0){g=b+4|0;f=k[a+12>>2]|0;d=0;c=0;e=0;do{k[o+(d<<2)>>2]=e;r=(k[b>>2]|0)==(d|0)?k[g>>2]|0:0;q=d;d=d+1|0;e=r+e+(k[f+(d<<2)>>2]|0)-(k[f+(q<<2)>>2]|0)|0;c=r+c|0}while((d|0)<(k[s>>2]|0))}else c=0;n=a+20|0;d=k[a+28>>2]|0;h=d+c|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(j|0,0,h<<4|0)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(d|0)<(h|0)?d:h;if((c|0)>0){g=k[n>>2]|0;nF(j|0,g|0,c<<4|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[n>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[n>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}m=a+12|0;e=k[s>>2]|0;d=k[m>>2]|0;if((e|0)>0){l=a+24|0;f=k[d+(e<<2)>>2]|0;do{j=e;e=e+-1|0;g=d+(e<<2)|0;c=k[g>>2]|0;i=f-c|0;h=o+(e<<2)|0;if((i|0)>0){f=i;do{a=f;f=f+-1|0;g=k[l>>2]|0;k[g+((k[h>>2]|0)+f<<2)>>2]=k[g+(c+f<<2)>>2];c=k[n>>2]|0;g=c+((k[d+(e<<2)>>2]|0)+f<<4)|0;d=c+((k[h>>2]|0)+f<<4)|0;k[d>>2]=k[g>>2];k[d+4>>2]=k[g+4>>2];k[d+8>>2]=k[g+8>>2];k[d+12>>2]=k[g+12>>2];d=k[m>>2]|0;g=d+(e<<2)|0;c=k[g>>2]|0}while((a|0)>1);f=c;c=g}else{f=c;c=g}k[c>>2]=k[h>>2];c=k[p>>2]|0;k[c+(e<<2)>>2]=i}while((j|0)>1);e=k[s>>2]|0}else c=k[p>>2]|0;a=e+-1|0;k[d+(e<<2)>>2]=(k[c+(a<<2)>>2]|0)+(k[d+(a<<2)>>2]|0)+((k[b>>2]|0)==(a|0)?k[b+4>>2]|0:0);ql(n,k[d+(k[s>>2]<<2)>>2]|0,0.0);return}function ho(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+24>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}ak(a,d,c);c=k[b>>2]|0;d=k[c+24>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;io(h,i,a)|0;return}ak(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;io(h,i,a)|0;return}function io(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+160|0;w=A+120|0;z=A+108|0;y=A+96|0;o=A+88|0;l=A+56|0;g=A+152|0;m=A;p=A+28|0;if(!(i[a>>0]|0))Oa(20840,20281,194,18314);d=k[a+28>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(20917,20281,195,18314);q=k[a+172>>2]|0;k[z>>2]=0;v=z+4|0;k[v>>2]=0;r=z+8|0;k[r>>2]=0;k[y>>2]=0;j=y+4|0;k[j>>2]=0;h=y+8|0;k[h>>2]=0;k[w>>2]=a;k[w+4>>2]=b;i[w+8>>0]=1;ak(z,d,k[b+8>>2]|0);jo(w,z);e=k[z>>2]|0;b=k[v>>2]|0;d=k[r>>2]|0;if(!((k[j>>2]|0)==(b|0)?(k[h>>2]|0)==(d|0):0)?(ak(y,b,d),!((k[j>>2]|0)==(b|0)?(k[h>>2]|0)==(d|0):0)):0)Oa(12160,12207,721,12285);f=k[y>>2]|0;d=aa(d,b)|0;if((d|0)>0){b=0;do{n=f+(b<<4)|0;B=e+(b<<4)|0;k[n>>2]=k[B>>2];k[n+4>>2]=k[B+4>>2];k[n+8>>2]=k[B+8>>2];k[n+12>>2]=k[B+12>>2];b=b+1|0}while((b|0)!=(d|0))}n=a+24|0;b=k[n>>2]|0;B=k[v>>2]|0;ak(z,(b|0)<(B|0)?B:b,k[r>>2]|0);b=a+56|0;if((q|0)<=-1)Oa(14177,13744,147,13812);if((k[b+8>>2]|0)<(q|0))Oa(14177,13744,147,13812);if((k[b+4>>2]|0)<(q|0))Oa(14177,13744,147,13812);i[l>>0]=0;i[l+4>>0]=0;B=l+5|0;i[B>>0]=i[g>>0]|0;i[B+1>>0]=i[g+1>>0]|0;i[B+2>>0]=i[g+2>>0]|0;k[l+8>>2]=b;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=q;k[l+24>>2]=q;b=k[h>>2]|0;B=k[y>>2]|0;k[m>>2]=B;k[m+4>>2]=q;k[m+8>>2]=b;if(!((b|q|0)>-1|(B|0)==0))Oa(13818,13988,175,14058);k[m+12>>2]=y;k[m+16>>2]=0;k[m+20>>2]=0;B=k[j>>2]|0;k[m+24>>2]=B;if(!((b|0)>-1&(B|0)>=(q|0)))Oa(14177,13744,147,13812);k[o>>2]=l;k[o+4>>2]=m;b=k[r>>2]|0;B=k[z>>2]|0;k[p>>2]=B;k[p+4>>2]=q;k[p+8>>2]=b;if(!((b|q|0)>-1|(B|0)==0))Oa(13818,13988,175,14058);k[p+12>>2]=z;k[p+16>>2]=0;k[p+20>>2]=0;B=k[v>>2]|0;k[p+24>>2]=B;if(!((b|0)>-1&(B|0)>=(q|0)))Oa(14177,13744,147,13812);mo(p,o,w);e=k[v>>2]|0;b=e-q|0;f=k[r>>2]|0;g=k[z>>2]|0;d=(f|b|0)>-1;if(!(d|(g+(q<<4)|0)==0))Oa(13818,13988,175,14058);if((b|q|f|0)<=-1)Oa(14177,13744,147,13812);if(!d)Oa(11919,12068,74,12145);if((f|0)>0&(b|0)>0){d=e-q<<4;b=0;do{iF(g+(q+(aa(e,b)|0)<<4)|0,0,d|0)|0;b=b+1|0}while((b|0)!=(f|0))}do if(!(k[a+140>>2]|0)){n=k[n>>2]|0;e=k[r>>2]|0;m=k[z>>2]|0;if(!((e|n|0)>-1|(m|0)==0))Oa(13818,13988,175,14058);j=k[v>>2]|0;if((n|0)<=-1)Oa(14177,13744,147,13812);if(!((e|0)>-1&(j|0)>=(n|0)))Oa(14177,13744,147,13812);l=c+4|0;if((k[l>>2]|0)==(n|0)?(s=c+8|0,(k[s>>2]|0)==(e|0)):0)x=s;else t=52;do if((t|0)==52){ak(c,n,e);if((k[l>>2]|0)!=(n|0))Oa(12160,12207,721,12285);b=c+8|0;if((k[b>>2]|0)==(e|0)){x=b;break}Oa(12160,12207,721,12285)}while(0);h=k[c>>2]|0;if((e|0)>0){g=0;d=n;b=e}else break;do{if((d|0)>0){e=aa(g,n)|0;f=aa(g,j)|0;b=0;do{d=h+(b+e<<4)|0;B=m+(b+f<<4)|0;k[d>>2]=k[B>>2];k[d+4>>2]=k[B+4>>2];k[d+8>>2]=k[B+8>>2];k[d+12>>2]=k[B+12>>2];b=b+1|0;d=k[l>>2]|0}while((b|0)<(d|0));b=k[x>>2]|0}g=g+1|0}while((g|0)<(b|0))}else{if(!(i[a>>0]|0))Oa(17611,20281,181,21094);b=a+152|0;f=k[n>>2]|0;g=k[r>>2]|0;e=k[z>>2]|0;if(!((g|f|0)>-1|(e|0)==0))Oa(13818,13988,175,14058);d=k[v>>2]|0;if((f|0)<=-1)Oa(14177,13744,147,13812);if(!((g|0)>-1&(d|0)>=(f|0)))Oa(14177,13744,147,13812);k[w>>2]=b;k[w+4>>2]=e;k[w+8>>2]=f;k[w+12>>2]=g;k[w+16>>2]=z;k[w+20>>2]=0;k[w+24>>2]=0;k[w+28>>2]=d;if((k[a+156>>2]|0)!=(f|0))Oa(14710,14850,97,14920);d=k[a+156>>2]|0;if(!((k[c+4>>2]|0)==(d|0)?(k[c+8>>2]|0)==(g|0):0)){ak(c,d,g);b=k[w>>2]|0}oo(c,b,w+4|0)}while(0);k[a+4>>2]=0;b=k[y>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[z>>2]|0;if(!b){u=A;return 1}Pq(k[b+-4>>2]|0);u=A;return 1}function jo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+176|0;H=M+72|0;J=M+56|0;K=M;L=M+92|0;E=M+148|0;F=M+120|0;e=k[a>>2]|0;G=k[e+28>>2]|0;e=k[e+24>>2]|0;G=(e|0)<(G|0)?e:G;e=a+4|0;d=k[e>>2]|0;f=k[d>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;I=b+4|0;if(!((k[I>>2]|0)==(c|0)?(k[b+8>>2]|0)==(d|0):0)){ak(b,c,d);if((k[I>>2]|0)!=(c|0))Oa(12160,12207,721,12285);if((k[b+8>>2]|0)!=(d|0))Oa(12160,12207,721,12285)}g=k[b>>2]|0;d=aa(d,c)|0;if((d|0)>0){c=0;do{D=g+(c<<4)|0;C=f+(c<<4)|0;k[D>>2]=k[C>>2];k[D+4>>2]=k[C+4>>2];k[D+8>>2]=k[C+8>>2];k[D+12>>2]=k[C+12>>2];c=c+1|0}while((c|0)!=(d|0))}c=(k[(k[a>>2]|0)+100>>2]|0)==(k[(k[e>>2]|0)+4>>2]|0);if(!(i[a+8>>0]|0)){if(!c)Oa(21020,20281,635,21087);l=b+8|0;c=k[l>>2]|0;if((c|0)<=0){u=M;return}m=(G|0)>0;n=J+8|0;o=K+4|0;q=K+8|0;r=L+4|0;s=L+12|0;t=L+16|0;v=L+20|0;w=L+24|0;j=H+4|0;x=K+8|0;h=K+16|0;y=K+32|0;z=K+36|0;A=F+4|0;B=F+12|0;C=F+16|0;D=F+20|0;E=F+24|0;g=0;a:while(1){if(m){e=G;do{f=e;e=e+-1|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;d=(k[a>>2]|0)+92|0;i[K>>0]=0;k[o>>2]=d;k[q>>2]=e;if((k[d+4>>2]|0)<(f|0)){c=53;break a}c=k[I>>2]|0;d=(k[b>>2]|0)+((aa(c,g)|0)<<4)|0;k[L>>2]=d;k[r>>2]=c;if(!((c|0)>-1|(d|0)==0)){c=54;break a}k[s>>2]=b;k[t>>2]=0;k[v>>2]=g;k[w>>2]=c;if((k[l>>2]|0)<=(g|0)){c=55;break a}ko(H,K,L);k[J>>2]=k[H>>2];k[J+4>>2]=k[H+4>>2];k[J+8>>2]=k[H+8>>2];k[J+12>>2]=k[H+12>>2];if(!(+p[J>>3]==0.0&+p[n>>3]==0.0)){c=k[a>>2]|0;if((k[c+132>>2]|0)<(f|0)){c=56;break a}uk(H,J,(k[c+128>>2]|0)+(e<<4)|0);k[J>>2]=k[H>>2];k[J+4>>2]=k[H+4>>2];k[J+8>>2]=k[H+8>>2];k[J+12>>2]=k[H+12>>2];c=(k[a>>2]|0)+92|0;if((k[c+4>>2]|0)<(f|0)){c=57;break a}d=k[c+8>>2]|0;k[j>>2]=k[J>>2];k[j+4>>2]=k[J+4>>2];k[j+8>>2]=k[J+8>>2];k[j+12>>2]=k[J+12>>2];if((d|0)<=-1){c=58;break a}i[K>>0]=0;k[x>>2]=d;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];k[h+12>>2]=k[j+12>>2];i[y>>0]=0;d=z;k[d>>2]=c;k[d+4>>2]=e;c=k[I>>2]|0;d=(k[b>>2]|0)+((aa(c,g)|0)<<4)|0;k[F>>2]=d;k[A>>2]=c;if(!((c|0)>-1|(d|0)==0)){c=59;break a}k[B>>2]=b;k[C>>2]=0;k[D>>2]=g;k[E>>2]=c;if((k[l>>2]|0)<=(g|0)){c=60;break a}lo(F,K,H)}}while((f|0)>1);c=k[l>>2]|0}g=g+1|0;if((g|0)>=(c|0)){c=61;break}}if((c|0)==53)Oa(13577,13744,122,13812);else if((c|0)==54)Oa(13818,13988,175,14058);else if((c|0)==55)Oa(13577,13744,122,13812);else if((c|0)==56)Oa(16605,15693,180,29764);else if((c|0)==57)Oa(13577,13744,122,13812);else if((c|0)==58)Oa(11919,12068,74,12145);else if((c|0)==59)Oa(13818,13988,175,14058);else if((c|0)==60)Oa(13577,13744,122,13812);else if((c|0)==61){u=M;return}}else{if(!c)Oa(21020,20281,620,21087);j=b+8|0;c=k[j>>2]|0;if((c|0)<=0){u=M;return}l=(G|0)>0;m=J+8|0;n=K+4|0;o=K+8|0;q=L+4|0;r=L+12|0;s=L+16|0;t=L+20|0;v=L+24|0;h=H+4|0;w=K+8|0;g=K+16|0;x=K+32|0;y=K+36|0;z=E+4|0;A=E+12|0;B=E+16|0;C=E+20|0;D=E+24|0;f=0;b:while(1){if(l){e=0;do{k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;F=(k[a>>2]|0)+92|0;i[K>>0]=0;k[n>>2]=F;k[o>>2]=e;if((k[F+4>>2]|0)<=(e|0)){c=27;break b}c=k[I>>2]|0;F=(k[b>>2]|0)+((aa(c,f)|0)<<4)|0;k[L>>2]=F;k[q>>2]=c;if(!((c|0)>-1|(F|0)==0)){c=28;break b}k[r>>2]=b;k[s>>2]=0;k[t>>2]=f;k[v>>2]=c;if((k[j>>2]|0)<=(f|0)){c=29;break b}ko(H,K,L);k[J>>2]=k[H>>2];k[J+4>>2]=k[H+4>>2];k[J+8>>2]=k[H+8>>2];k[J+12>>2]=k[H+12>>2];if(!(+p[J>>3]==0.0&+p[m>>3]==0.0)){c=k[a>>2]|0;if((k[c+132>>2]|0)<=(e|0)){c=30;break b}uk(H,J,(k[c+128>>2]|0)+(e<<4)|0);k[J>>2]=k[H>>2];k[J+4>>2]=k[H+4>>2];k[J+8>>2]=k[H+8>>2];k[J+12>>2]=k[H+12>>2];c=(k[a>>2]|0)+92|0;if((k[c+4>>2]|0)<=(e|0)){c=31;break b}d=k[c+8>>2]|0;k[h>>2]=k[J>>2];k[h+4>>2]=k[J+4>>2];k[h+8>>2]=k[J+8>>2];k[h+12>>2]=k[J+12>>2];if((d|0)<=-1){c=32;break b}i[K>>0]=0;k[w>>2]=d;k[g>>2]=k[h>>2];k[g+4>>2]=k[h+4>>2];k[g+8>>2]=k[h+8>>2];k[g+12>>2]=k[h+12>>2];i[x>>0]=0;F=y;k[F>>2]=c;k[F+4>>2]=e;c=k[I>>2]|0;F=(k[b>>2]|0)+((aa(c,f)|0)<<4)|0;k[E>>2]=F;k[z>>2]=c;if(!((c|0)>-1|(F|0)==0)){c=33;break b}k[A>>2]=b;k[B>>2]=0;k[C>>2]=f;k[D>>2]=c;if((k[j>>2]|0)<=(f|0)){c=34;break b}lo(E,K,H)}e=e+1|0}while((e|0)<(G|0));c=k[j>>2]|0}f=f+1|0;if((f|0)>=(c|0)){c=61;break}}if((c|0)==27)Oa(13577,13744,122,13812);else if((c|0)==28)Oa(13818,13988,175,14058);else if((c|0)==29)Oa(13577,13744,122,13812);else if((c|0)==30)Oa(16605,15693,180,29764);else if((c|0)==31)Oa(13577,13744,122,13812);else if((c|0)==32)Oa(11919,12068,74,12145);else if((c|0)==33)Oa(13818,13988,175,14058);else if((c|0)==34)Oa(13577,13744,122,13812);else if((c|0)==61){u=M;return}}}function ko(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0.0;q=u;u=u+32|0;n=q+16|0;o=q;h=k[b+4>>2]|0;d=k[h+8>>2]|0;if((d|0)!=(k[c+4>>2]|0))Oa(20474,20497,26,20575);if((d|0)<=0)Oa(20579,20497,27,20575);l=k[h+20>>2]|0;m=k[h+24>>2]|0;b=k[b+8>>2]|0;e=(k[h+12>>2]|0)+(b<<2)|0;if(!e)while(1){}j=k[e>>2]|0;d=k[h+16>>2]|0;if((d|0)!=0?(i=d+(b<<2)|0,(i|0)!=0):0)b=(k[i>>2]|0)+j|0;else b=k[e+4>>2]|0;e=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;if((j|0)>=(b|0)){u=q;return}h=o+8|0;i=n+8|0;d=j;f=0.0;g=0.0;do{r=-+p[l+(d<<4)+8>>3];p[o>>3]=+p[l+(d<<4)>>3];p[h>>3]=r;uk(n,o,(k[c>>2]|0)+(k[m+(d<<2)>>2]<<4)|0);f=+p[n>>3]+f;p[a>>3]=f;g=+p[i>>3]+g;p[e>>3]=g;d=d+1|0}while((d|0)<(b|0));u=q;return}function lo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+64|0;m=o+48|0;n=o;e=b+16|0;l=o+16+8|0;k[l>>2]=k[e>>2];k[l+4>>2]=k[e+4>>2];k[l+8>>2]=k[e+8>>2];k[l+12>>2]=k[e+12>>2];e=k[b+36>>2]|0;if((k[a+4>>2]|0)!=(k[e+8>>2]|0))Oa(14392,12207,710,12285);f=k[a>>2]|0;g=n+8|0;h=k[e+20>>2]|0;i=k[e+24>>2]|0;b=k[b+32+8>>2]|0;d=(k[e+12>>2]|0)+(b<<2)|0;if(!d)while(1){}c=k[d>>2]|0;a=k[e+16>>2]|0;if((a|0)!=0?(j=a+(b<<2)|0,(j|0)!=0):0)a=(k[j>>2]|0)+c|0;else a=k[d+4>>2]|0;if((c|0)>=(a|0)){u=o;return}do{j=k[i+(c<<2)>>2]|0;k[m>>2]=k[l>>2];k[m+4>>2]=k[l+4>>2];k[m+8>>2]=k[l+8>>2];k[m+12>>2]=k[l+12>>2];uk(n,m,h+(c<<4)|0);e=f+(j<<4)|0;p[e>>3]=+p[e>>3]-+p[n>>3];j=f+(j<<4)+8|0;p[j>>3]=+p[j>>3]-+p[g>>3];c=c+1|0}while((c|0)<(a|0));u=o;return}function mo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=k[b>>2]|0;e=k[n+24>>2]|0;d=k[b+4>>2]|0;b=k[d+8>>2]|0;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(e|0))Oa(14445,14320,257,12780);if((k[a+8>>2]|0)!=(b|0)?(k[a+8>>2]|0)!=(b|0):0)Oa(14445,14320,257,12780);i=k[a>>2]|0;j=k[d>>2]|0;if((i|0)!=(j|0)){l=k[d+24>>2]|0;if((c|0)!=(k[d+4>>2]|0))Oa(14445,14320,257,12780);m=a+8|0;if((b|0)!=(k[d+8>>2]|0))Oa(14445,14320,257,12780);g=k[a+24>>2]|0;if((b|0)>0){f=0;do{if((c|0)>0){d=aa(f,g)|0;e=aa(f,l)|0;b=0;do{c=i+(b+d<<4)|0;o=j+(b+e<<4)|0;k[c>>2]=k[o>>2];k[c+4>>2]=k[o+4>>2];k[c+8>>2]=k[o+8>>2];k[c+12>>2]=k[o+12>>2];b=b+1|0;c=k[h>>2]|0}while((b|0)<(c|0));b=k[m>>2]|0}f=f+1|0}while((f|0)<(b|0));b=k[n+24>>2]|0}else b=e}else b=e;if((b|0)==(c|0)?(b|0)==(k[n+20>>2]|0):0){no(n+4|0,a);return}else Oa(18358,18431,180,18516)}function no(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0;E=u;u=u+32|0;z=E+16|0;A=E;B=b+8|0;c=k[B>>2]|0;if((c|0)<=0){u=E;return}x=k[a+4>>2]|0;C=a+20|0;r=b+24|0;s=a+12|0;t=x+20|0;v=x+24|0;w=x+12|0;x=x+16|0;y=a+8|0;n=a+16|0;o=A+8|0;q=z+8|0;m=0;a=c;a:while(1){c=k[C>>2]|0;if((c|0)>0){do{j=c;c=c+-1|0;h=k[b>>2]|0;i=(aa(k[r>>2]|0,m)|0)+c|0;l=h+(i<<4)|0;if(!(+p[l>>3]==0.0?!(+p[h+(i<<4)+8>>3]!=0.0):0))D=10;b:do if((D|0)==10){D=0;d=k[s>>2]|0;e=d+c|0;h=k[t>>2]|0;i=k[v>>2]|0;f=k[w>>2]|0;a=k[f+(e<<2)>>2]|0;g=k[x>>2]|0;if(!g)e=k[f+(d+j<<2)>>2]|0;else e=(k[g+(e<<2)>>2]|0)+a|0;f=k[y>>2]|0;g=(k[n>>2]|0)+f|0;c:do if((a|0)<(e|0))do{if((k[i+(a<<2)>>2]|0)>=(f|0))break c;a=a+1|0}while((a|0)<(e|0));while(0);if((a|0)>=(e|0)){D=21;break a}while(1){d=k[i+(a<<2)>>2]|0;if((d|0)>=(g|0)){D=21;break a}if((d-f|0)==(c|0))break;a=a+1|0;if((a|0)>=(e|0)){D=21;break a}}if((d-f|0)!=(c|0)){D=21;break a}F=+p[h+(a<<4)+8>>3];p[A>>3]=+p[h+(a<<4)>>3];p[o>>3]=F;tk(z,l,A);k[l>>2]=k[z>>2];k[l+4>>2]=k[z+4>>2];k[l+8>>2]=k[z+8>>2];k[l+12>>2]=k[z+12>>2];d=k[s>>2]|0;e=d+c|0;h=k[t>>2]|0;i=k[v>>2]|0;f=k[w>>2]|0;a=k[f+(e<<2)>>2]|0;g=k[x>>2]|0;if(!g)f=k[f+(d+j<<2)>>2]|0;else f=(k[g+(e<<2)>>2]|0)+a|0;d=k[y>>2]|0;g=(k[n>>2]|0)+d|0;d:do if((a|0)<(f|0))do{if((k[i+(a<<2)>>2]|0)>=(d|0))break d;a=a+1|0}while((a|0)<(f|0));while(0);if((a|0)<(f|0))do{d=i+(a<<2)|0;e=k[d>>2]|0;if((e|0)>=(g|0))break b;if((e-(k[y>>2]|0)|0)>=(c|0))break b;uk(z,l,h+(a<<4)|0);G=k[b>>2]|0;e=(aa(k[r>>2]|0,m)|0)+((k[d>>2]|0)-(k[y>>2]|0))|0;d=G+(e<<4)|0;p[d>>3]=+p[d>>3]-+p[z>>3];e=G+(e<<4)+8|0;p[e>>3]=+p[e>>3]-+p[q>>3];a=a+1|0}while((a|0)<(f|0))}while(0)}while((j|0)>1);a=k[B>>2]|0}m=m+1|0;if((m|0)>=(a|0)){D=3;break}}if((D|0)==3){u=E;return}else if((D|0)==21)Oa(18529,18431,160,13144)}function oo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+16|0;t=z;q=k[c>>2]|0;r=k[c+4>>2]|0;s=k[c+8>>2]|0;o=k[c+24>>2]|0;j=k[a>>2]|0;if((j|0)==(q|0)?(x=a+4|0,(k[x>>2]|0)==(o|0)):0){m=b+4|0;n=k[m>>2]|0;if((n|0)<=-1)Oa(13359,12702,312,12780);if(!n){u=z;return}c=Oq(n+16|0)|0;q=c+16&-16;if(!c){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}k[q+-4>>2]=c;if(!q){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}p=q;iF(p|0,0,n|0)|0;c=k[m>>2]|0;a:do if((c|0)>0){o=a+8|0;d=0;b:while(1){c:do if((d|0)<(c|0)){e=(d|0)>-1;while(1){if(!(e&(n|0)>(d|0))){y=25;break b}if(!(i[p+d>>0]|0)){w=d;break c}d=d+1|0;if((d|0)>=(c|0)){w=d;break}}}else w=d;while(0);if((w|0)>=(c|0)){y=47;break a}d=w+1|0;i[p+w>>0]=1;c=k[b>>2]|0;v=k[c+(w<<2)>>2]|0;if((v|0)!=(w|0)){if((w|0)>-1)l=v;else{y=40;break}do{e=k[a>>2]|0;g=e+(l<<4)|0;h=k[o>>2]|0;f=(h|0)>-1;if(!((g|0)==0|f)){y=41;break b}if((l|0)<=-1){y=43;break b}j=k[x>>2]|0;if((j|0)<=(l|0)){y=43;break b}e=e+(w<<4)|0;if(!((e|0)==0|f)){y=45;break b}if((j|0)<=(w|0)){y=46;break b}if((h|0)>0){c=0;do{s=aa(c,j)|0;r=g+(s<<4)|0;s=e+(s<<4)|0;k[t>>2]=k[r>>2];k[t+4>>2]=k[r+4>>2];k[t+8>>2]=k[r+8>>2];k[t+12>>2]=k[r+12>>2];k[r>>2]=k[s>>2];k[r+4>>2]=k[s+4>>2];k[r+8>>2]=k[s+8>>2];k[r+12>>2]=k[s+12>>2];k[s>>2]=k[t>>2];k[s+4>>2]=k[t+4>>2];k[s+8>>2]=k[t+8>>2];k[s+12>>2]=k[t+12>>2];c=c+1|0}while((c|0)!=(h|0));c=k[b>>2]|0}i[p+l>>0]=1;l=k[c+(l<<2)>>2]|0}while((l|0)!=(w|0))}c=k[m>>2]|0;if((d|0)>=(c|0))break a}if((y|0)==25)Oa(16605,15693,408,29907);else if((y|0)==40){d=k[a>>2]|0;c=(k[o>>2]|0)>-1;if(!((d+(v<<4)|0)==0|c))Oa(13818,13988,175,14058);if(!((v|0)>-1?(k[x>>2]|0)>(v|0):0))Oa(13577,13744,122,13812);if((d+(w<<4)|0)==0|c)Oa(13577,13744,122,13812);else Oa(13818,13988,175,14058)}else if((y|0)==41)Oa(13818,13988,175,14058);else if((y|0)==43)Oa(13577,13744,122,13812);else if((y|0)==45)Oa(13818,13988,175,14058);else if((y|0)==46)Oa(13577,13744,122,13812)}else y=47;while(0);if((y|0)==47?(q|0)==0:0){u=z;return}Pq(k[p+-4>>2]|0);u=z;return}if((r|0)<=0){u=z;return}m=a+8|0;n=a+4|0;l=(s|0)>0;if((s|0)<=-1){d=k[b>>2]|0;h=k[m>>2]|0;f=(h|0)>-1;g=k[n>>2]|0;h=(h|0)==(s|0);c=0;while(1){if(q+(c<<4)|0){y=50;break}e=k[d+(c<<2)>>2]|0;if(!((j+(e<<4)|0)==0|f)){y=52;break}if(!((e|0)>-1&(g|0)>(e|0))){y=54;break}if(!h){y=56;break}c=c+1|0;if((c|0)>=(r|0)){y=58;break}}if((y|0)==50)Oa(13818,13988,175,14058);else if((y|0)==52)Oa(13818,13988,175,14058);else if((y|0)==54)Oa(13577,13744,122,13812);else if((y|0)==56)Oa(14445,14320,257,12780);else if((y|0)==58){u=z;return}}else p=0;while(1){e=q+(p<<4)|0;c=k[(k[b>>2]|0)+(p<<2)>>2]|0;f=(k[a>>2]|0)+(c<<4)|0;d=k[m>>2]|0;if(!((f|0)==0|(d|0)>-1)){y=52;break}if((c|0)<=-1){y=54;break}g=k[n>>2]|0;if((g|0)<=(c|0)){y=54;break}if((d|0)!=(s|0)){y=56;break}if(l){c=0;do{vF(f+((aa(c,g)|0)<<4)|0,e+((aa(c,o)|0)<<4)|0,16)|0;c=c+1|0}while((c|0)!=(s|0))}p=p+1|0;if((p|0)>=(r|0)){y=58;break}}if((y|0)==52)Oa(13818,13988,175,14058);else if((y|0)==54)Oa(13577,13744,122,13812);else if((y|0)==56)Oa(14445,14320,257,12780);else if((y|0)==58){u=z;return}}function po(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function qo(){od(0);return}function ro(){so(0);return} -function jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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.0,Q=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0;X=u;u=u+48|0;U=X;d=k[b+4>>2]|0;c=b+8|0;e=k[c>>2]|0;W=k[e+4>>2]|0;if(i[b>>0]|0){Dg(a,k[e+8>>2]|0,W);J=a+28|0;k[J>>2]=0;K=a+12|0;M=a+4|0;iF(k[K>>2]|0,0,(k[M>>2]<<2)+4|0)|0;b=k[a+16>>2]|0;if(b|0)iF(b|0,0,k[M>>2]<<2|0)|0;U=k[c>>2]|0;V=k[U+8>>2]|0;U=k[U+4>>2]|0;Gg(a,((V|0)<(U|0)?U:V)<<1);a:do if((W|0)>0){F=d;C=F+20|0;D=F+24|0;E=F+12|0;F=F+16|0;G=e+20|0;H=e+24|0;I=e+12|0;A=e+16|0;B=a+20|0;z=a+24|0;x=0;b:while(1){b=k[K>>2]|0;c=k[b+(x<<2)>>2]|0;if((c|0)!=(k[J>>2]|0)){V=15;break}y=x;x=x+1|0;b=b+(x<<2)|0;if(k[b>>2]|0){V=17;break}k[b>>2]=c;m=k[C>>2]|0;h=k[D>>2]|0;b=k[E>>2]|0;j=k[b+(y<<2)>>2]|0;c=k[F>>2]|0;if(!c)w=k[b+(x<<2)>>2]|0;else w=(k[c+(y<<2)>>2]|0)+j|0;l=k[G>>2]|0;f=k[H>>2]|0;b=k[I>>2]|0;e=k[b+(y<<2)>>2]|0;c=k[A>>2]|0;if(!c)v=k[b+(x<<2)>>2]|0;else v=(k[c+(y<<2)>>2]|0)+e|0;d=(j|0)<(w|0);c:do if(d){c=k[h+(j<<2)>>2]|0;do if((e|0)<(v|0)){b=k[f+(e<<2)>>2]|0;if((c|0)!=(b|0))if((c|0)<(b|0))break;else{V=30;break c}else{N=j+1|0;O=e+1|0;P=+p[m+(j<<3)>>3]-+p[l+(e<<3)>>3];L=c;V=35;break c}}while(0);N=j+1|0;O=e;P=+p[m+(j<<3)>>3];L=c;V=35}else V=30;while(0);do if((V|0)==30?(V=0,(e|0)<(v|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[h+(j<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;N=j;O=e+1|0;P=0.0-+p[l+(e<<3)>>3];L=b;V=35}while(0);d:do if((V|0)==35?(0,(L|0)>-1):0){t=h;s=m;r=N;b=O;g=P;c=L;e:while(1){n=(r|0)<(w|0);o=t+(r<<2)|0;q=b;b=c;while(1){j=(q|0)<(v|0);m=f+(q<<2)|0;c=k[K>>2]|0;d=c+(x<<2)|0;e=k[d>>2]|0;h=(e|0)==(k[J>>2]|0);if(n){if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;V=k[J>>2]|0;Eg(B,V+1|0,1.0);c=k[B>>2]|0;p[c+(V<<3)>>3]=0.0;k[(k[z>>2]|0)+(V<<2)>>2]=b;p[c+(e<<3)>>3]=g;c=k[o>>2]|0;if(!j){V=59;break}b=k[m>>2]|0;if((c|0)==(b|0)){V=57;break}if((c|0)<(b|0)){V=59;break}if((c|0)<=(b|0))break d}else{if(!j)break e;if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;U=k[J>>2]|0;Eg(B,U+1|0,1.0);V=k[B>>2]|0;p[V+(U<<3)>>3]=0.0;k[(k[z>>2]|0)+(U<<2)>>2]=b;p[V+(e<<3)>>3]=g;b=k[m>>2]|0}g=0.0-+p[l+(q<<3)>>3];if((b|0)>-1)q=q+1|0;else break d}if((V|0)==57){b=q+1|0;g=+p[s+(r<<3)>>3]-+p[l+(q<<3)>>3]}else if((V|0)==59){b=q;g=+p[s+(r<<3)>>3]}if((c|0)>-1)r=r+1|0;else break d}if(!h){V=52;break b}if((e|0)!=(k[c+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(e+-1<<2)>>2]|0)>=(b|0):0){V=55;break b}k[d>>2]=e+1;U=k[J>>2]|0;Eg(B,U+1|0,1.0);V=k[B>>2]|0;p[V+(U<<3)>>3]=0.0;k[(k[z>>2]|0)+(U<<2)>>2]=b;p[V+(e<<3)>>3]=g}while(0);if((x|0)>=(W|0))break a}if((V|0)==15)Oa(16047,15958,414,16152);else if((V|0)==17)Oa(16161,15958,415,16152);else if((V|0)==52)Oa(16249,15958,392,16348);else if((V|0)==55)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=X;return}f=k[J>>2]|0;d=k[M>>2]|0;if((d|0)<=-1){u=X;return}e=k[K>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=X;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[M>>2]|0));u=X;return}I=k[e+8>>2]|0;i[U>>0]=0;L=U+4|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[L+16>>2]=0;k[L+20>>2]=0;k[L+24>>2]=0;k[L+28>>2]=0;k[U+8>>2]=I;I=U+28|0;k[I>>2]=0;b=Oq((W<<2)+4|0)|0;k[U+12>>2]=b;if(!b){X=Kb(4)|0;cF(X);Cc(X|0,2032,79)}k[L>>2]=W;N=U+16|0;O=k[c>>2]|0;K=U+12|0;iF(b|0,0,(W<<2)+4|0)|0;V=k[O+8>>2]|0;O=k[O+4>>2]|0;Gg(U,((V|0)<(O|0)?O:V)<<1);f:do if((W|0)>0){E=d;B=E+20|0;C=E+24|0;D=E+12|0;E=E+16|0;F=e+20|0;G=e+24|0;H=e+12|0;z=e+16|0;A=U+20|0;y=U+24|0;w=0;g:while(1){b=k[K>>2]|0;c=k[b+(w<<2)>>2]|0;if((c|0)!=(k[I>>2]|0)){V=74;break}x=w;w=w+1|0;b=b+(w<<2)|0;if(k[b>>2]|0){V=76;break}k[b>>2]=c;m=k[B>>2]|0;h=k[C>>2]|0;b=k[D>>2]|0;j=k[b+(x<<2)>>2]|0;c=k[E>>2]|0;if(!c)v=k[b+(w<<2)>>2]|0;else v=(k[c+(x<<2)>>2]|0)+j|0;l=k[F>>2]|0;f=k[G>>2]|0;b=k[H>>2]|0;e=k[b+(x<<2)>>2]|0;c=k[z>>2]|0;if(!c)t=k[b+(w<<2)>>2]|0;else t=(k[c+(x<<2)>>2]|0)+e|0;d=(j|0)<(v|0);h:do if(d){b=k[h+(j<<2)>>2]|0;do if((e|0)<(t|0)){c=k[f+(e<<2)>>2]|0;if((b|0)!=(c|0))if((b|0)<(c|0))break;else{V=89;break h}else{M=j+1|0;Q=e+1|0;R=+p[m+(j<<3)>>3]-+p[l+(e<<3)>>3];J=b;V=94;break h}}while(0);M=j+1|0;Q=e;R=+p[m+(j<<3)>>3];J=b;V=94}else V=89;while(0);do if((V|0)==89?(V=0,(e|0)<(t|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[h+(j<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;M=j;Q=e+1|0;R=0.0-+p[l+(e<<3)>>3];J=b;V=94}while(0);i:do if((V|0)==94?(0,(J|0)>-1):0){s=l;c=M;r=Q;g=R;b=J;while(1){n=(r|0)<(t|0);o=f+(r<<2)|0;q=c;while(1){c=h+(q<<2)|0;d=k[K>>2]|0;e=d+(w<<2)|0;j=k[e>>2]|0;l=(j|0)==(k[I>>2]|0);if((q|0)>=(v|0)){V=105;break}if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g;b=k[c>>2]|0;if(n){c=k[o>>2]|0;if((b|0)==(c|0)){V=116;break}if((b|0)>=(c|0)){V=104;break}}g=+p[m+(q<<3)>>3];if((b|0)>-1)q=q+1|0;else break i}if((V|0)==104)if((b|0)>(c|0)){b=c;V=119}else break i;else if((V|0)==105){if(!n)break;if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g;b=k[o>>2]|0;V=119}else if((V|0)==116){V=0;c=q+1|0;g=+p[m+(q<<3)>>3]-+p[s+(r<<3)>>3]}if((V|0)==119){c=q;g=0.0-+p[s+(r<<3)>>3]}if((b|0)>-1)r=r+1|0;else break i}if(!l){V=111;break g}if((j|0)!=(k[d+(x<<2)>>2]|0)?(k[(k[y>>2]|0)+(j+-1<<2)>>2]|0)>=(b|0):0){V=114;break g}k[e>>2]=j+1;O=k[I>>2]|0;Eg(A,O+1|0,1.0);V=k[A>>2]|0;p[V+(O<<3)>>3]=0.0;k[(k[y>>2]|0)+(O<<2)>>2]=b;p[V+(j<<3)>>3]=g}while(0);if((w|0)>=(W|0))break f}if((V|0)==74)Oa(16047,15958,414,16152);else if((V|0)==76)Oa(16161,15958,415,16152);else if((V|0)==111)Oa(16249,15958,392,16348);else if((V|0)==114)Oa(16371,15958,393,16348)}while(0);if((k[U+16>>2]|0)==0?(T=k[I>>2]|0,S=k[L>>2]|0,(S|0)>-1):0){d=k[K>>2]|0;b=S;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(S|0))do{b=b+1|0;k[d+(b<<2)>>2]=T}while((b|0)<(k[L>>2]|0))}i[U>>0]=1;Ag(a,U)|0;Pq(k[K>>2]|0);Pq(k[N>>2]|0);b=k[U+20>>2]|0;if(b|0)FA(b);b=k[U+24>>2]|0;if(b|0)FA(b);u=X;return}function kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0;F=u;u=u+48|0;C=F;e=k[b+4>>2]|0;D=+p[b+16>>3];d=b+12|0;E=k[d>>2]|0;if(i[b>>0]|0){b=b+8|0;Dg(a,k[b>>2]|0,E);w=a+28|0;k[w>>2]=0;x=a+12|0;y=a+4|0;iF(k[x>>2]|0,0,(k[y>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[y>>2]<<2|0)|0;C=k[b>>2]|0;B=k[d>>2]|0;Gg(a,((C|0)<(B|0)?B:C)<<1);a:do if((E|0)>0){t=e;q=t+20|0;r=t+24|0;s=t+12|0;t=t+16|0;v=a+20|0;o=a+24|0;m=0;b:while(1){d=k[x>>2]|0;f=k[d+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){b=15;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=f;j=k[q>>2]|0;l=k[r>>2]|0;b=k[s>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[t>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;c:do if((e|0)<(h|0)){if((f|0)!=(k[w>>2]|0)){b=23;break b}while(1){g=D*+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((f|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=26;break b}k[c>>2]=f+1;B=k[w>>2]|0;Eg(v,B+1|0,1.0);C=k[v>>2]|0;p[C+(B<<3)>>3]=0.0;k[(k[o>>2]|0)+(B<<2)>>2]=b;p[C+(f<<3)>>3]=g;e=e+1|0;if((e|0)>=(h|0))break c;d=k[x>>2]|0;f=k[d+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){b=23;break b}}}while(0);if((m|0)>=(E|0))break a}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=F;return}f=k[w>>2]|0;d=k[y>>2]|0;if((d|0)<=-1){u=F;return}e=k[x>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=F;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[y>>2]|0));u=F;return}b=b+8|0;w=k[b>>2]|0;i[C>>0]=0;y=C+4|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[y+16>>2]=0;k[y+20>>2]=0;k[y+24>>2]=0;k[y+28>>2]=0;k[C+8>>2]=w;w=C+28|0;k[w>>2]=0;c=Oq((E<<2)+4|0)|0;k[C+12>>2]=c;if(!c){F=Kb(4)|0;cF(F);Cc(F|0,2032,79)}k[y>>2]=E;z=C+16|0;v=k[b>>2]|0;t=k[d>>2]|0;x=C+12|0;iF(c|0,0,(E<<2)+4|0)|0;Gg(C,((v|0)<(t|0)?t:v)<<1);d:do if((E|0)>0){t=e;q=t+20|0;r=t+24|0;s=t+12|0;t=t+16|0;v=C+20|0;o=C+24|0;m=0;e:while(1){d=k[x>>2]|0;f=k[d+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){b=42;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=44;break}k[b>>2]=f;j=k[q>>2]|0;l=k[r>>2]|0;b=k[s>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[t>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;f:do if((e|0)<(h|0)){if((f|0)!=(k[w>>2]|0)){b=50;break e}while(1){g=D*+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((f|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=53;break e}k[c>>2]=f+1;c=k[w>>2]|0;Eg(v,c+1|0,1.0);d=k[v>>2]|0;p[d+(c<<3)>>3]=0.0;k[(k[o>>2]|0)+(c<<2)>>2]=b;p[d+(f<<3)>>3]=g;e=e+1|0;if((e|0)>=(h|0))break f;d=k[x>>2]|0;f=k[d+(m<<2)>>2]|0;if((f|0)!=(k[w>>2]|0)){b=50;break e}}}while(0);if((m|0)>=(E|0))break d}if((b|0)==42)Oa(16047,15958,414,16152);else if((b|0)==44)Oa(16161,15958,415,16152);else if((b|0)==50)Oa(16249,15958,392,16348);else if((b|0)==53)Oa(16371,15958,393,16348)}while(0);if((k[C+16>>2]|0)==0?(B=k[w>>2]|0,A=k[y>>2]|0,(A|0)>-1):0){d=k[x>>2]|0;b=A;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(A|0))do{b=b+1|0;k[d+(b<<2)>>2]=B}while((b|0)<(k[y>>2]|0))}i[C>>0]=1;Ag(a,C)|0;Pq(k[x>>2]|0);Pq(k[z>>2]|0);b=k[C+20>>2]|0;if(b|0)FA(b);b=k[C+24>>2]|0;if(b|0)FA(b);u=F;return}function lh(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0;g=u;u=u+720|0;f=g+8|0;e=g;d=k[a>>2]|0;h=k[a+4>>2]|0;a=b+(h>>1)|0;if(h&1)d=k[(k[a>>2]|0)+d>>2]|0;p[e>>3]=c;cd[d&63](f,a,e);a=CA(704)|0;Tg(a,f);Pq(k[f+676>>2]|0);Pq(k[f+680>>2]|0);d=k[f+684>>2]|0;if(d|0)FA(d);d=k[f+688>>2]|0;if(d|0)FA(d);sg(f+456|0);tg(f+136|0);vg(f+8|0);u=g;return a|0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+96|0;B=C;z=C+56|0;nh(B,b);g=b+8|0;A=k[(k[g>>2]|0)+4>>2]|0;if(!(i[b>>0]|0)){e=b+4|0;s=k[(k[e>>2]|0)+8>>2]|0;i[z>>0]=0;w=z+4|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[w+16>>2]=0;k[w+20>>2]=0;k[w+24>>2]=0;k[w+28>>2]=0;k[z+8>>2]=s;s=z+28|0;k[s>>2]=0;c=Oq((A<<2)+4|0)|0;k[z+12>>2]=c;if(!c){C=Kb(4)|0;cF(C);Cc(C|0,2032,79)}k[w>>2]=A;v=z+16|0;b=k[v>>2]|0;if(!b){t=z+12|0;r=t;d=A;b=c}else{Pq(b);k[v>>2]=0;b=z+12|0;r=b;t=b;d=k[w>>2]|0;b=k[b>>2]|0}iF(b|0,0,(d<<2)+4|0)|0;q=k[(k[e>>2]|0)+8>>2]|0;o=k[(k[g>>2]|0)+4>>2]|0;Gg(z,((q|0)<(o|0)?o:q)<<1);a:do if((A|0)>0){q=z+20|0;o=z+24|0;m=0;b:while(1){d=k[r>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[s>>2]|0)){b=45;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=47;break}k[b>>2]=g;c=k[B>>2]|0;j=k[c+20>>2]|0;l=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;c:do if((e|0)<(h|0)){if((g|0)!=(k[s>>2]|0)){b=53;break b}while(1){f=+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((g|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(g+-1<<2)>>2]|0)>=(b|0):0){b=56;break b}k[c>>2]=g+1;c=k[s>>2]|0;Eg(q,c+1|0,1.0);d=k[q>>2]|0;p[d+(c<<3)>>3]=0.0;k[(k[o>>2]|0)+(c<<2)>>2]=b;p[d+(g<<3)>>3]=f;e=e+1|0;if((e|0)>=(h|0))break c;d=k[r>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[s>>2]|0)){b=53;break b}}}while(0);if((m|0)>=(A|0))break a}if((b|0)==45)Oa(16047,15958,414,16152);else if((b|0)==47)Oa(16161,15958,415,16152);else if((b|0)==53)Oa(16249,15958,392,16348);else if((b|0)==56)Oa(16371,15958,393,16348)}while(0);if((k[z+16>>2]|0)==0?(y=k[s>>2]|0,x=k[w>>2]|0,(x|0)>-1):0){d=k[r>>2]|0;b=x;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(x|0))do{b=b+1|0;k[d+(b<<2)>>2]=y}while((b|0)<(k[w>>2]|0))}i[z>>0]=1;Ag(a,z)|0;Pq(k[t>>2]|0);Pq(k[v>>2]|0);b=k[z+20>>2]|0;if(b|0)FA(b);b=k[z+24>>2]|0;if(b|0)FA(b)}else{b=b+4|0;Dg(a,k[(k[b>>2]|0)+8>>2]|0,A);r=a+28|0;k[r>>2]=0;s=a+12|0;t=a+4|0;iF(k[s>>2]|0,0,(k[t>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[t>>2]<<2|0)|0;z=k[(k[b>>2]|0)+8>>2]|0;y=k[(k[g>>2]|0)+4>>2]|0;Gg(a,((z|0)<(y|0)?y:z)<<1);d:do if((A|0)>0){q=a+20|0;o=a+24|0;m=0;e:while(1){d=k[s>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[r>>2]|0)){b=15;break}n=m;m=m+1|0;b=d+(m<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=g;c=k[B>>2]|0;j=k[c+20>>2]|0;l=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(n<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)h=k[b+(m<<2)>>2]|0;else h=(k[c+(n<<2)>>2]|0)+e|0;f:do if((e|0)<(h|0)){if((g|0)!=(k[r>>2]|0)){b=23;break e}while(1){f=+p[j+(e<<3)>>3];b=k[l+(e<<2)>>2]|0;c=d+(m<<2)|0;if((g|0)!=(k[d+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(g+-1<<2)>>2]|0)>=(b|0):0){b=26;break e}k[c>>2]=g+1;y=k[r>>2]|0;Eg(q,y+1|0,1.0);z=k[q>>2]|0;p[z+(y<<3)>>3]=0.0;k[(k[o>>2]|0)+(y<<2)>>2]=b;p[z+(g<<3)>>3]=f;e=e+1|0;if((e|0)>=(h|0))break f;d=k[s>>2]|0;g=k[d+(m<<2)>>2]|0;if((g|0)!=(k[r>>2]|0)){b=23;break e}}}while(0);if((m|0)>=(A|0))break d}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if((k[a+16>>2]|0)==0?(w=k[r>>2]|0,v=k[t>>2]|0,(v|0)>-1):0){d=k[s>>2]|0;b=v;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(v|0))do{b=b+1|0;k[d+(b<<2)>>2]=w}while((b|0)<(k[t>>2]|0))}}Pq(k[B+28>>2]|0);Pq(k[B+32>>2]|0);b=k[B+36>>2]|0;if(b|0)FA(b);b=k[B+40>>2]|0;if(!b){u=C;return}FA(b);u=C;return}function nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;e=a+8|0;p[e>>3]=0.0;c=a+16|0;d=b+4|0;g=k[(k[d>>2]|0)+8>>2]|0;b=b+8|0;f=k[(k[b>>2]|0)+4>>2]|0;i[c>>0]=0;h=a+20|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+28>>2]=0;Dg(c,g,f);k[a>>2]=c;p[e>>3]=0.0;oh(k[d>>2]|0,k[b>>2]|0,c);return}function oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+80|0;h=j+36|0;f=j;d=k[a+8>>2]|0;g=k[b+4>>2]|0;if((d|0)>(g|0)){i[h>>0]=0;e=h+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[h+8>>2]=d;k[h+28>>2]=0;d=Oq((g<<2)+4|0)|0;k[h+12>>2]=d;if(!d){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[e>>2]=g;iF(d|0,0,(g<<2)+4|0)|0;ph(a,b,h,1);i[h>>0]=1;Ag(c,h)|0;Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);d=k[h+20>>2]|0;if(d|0)FA(d);d=k[h+24>>2]|0;if(d|0)FA(d);u=j;return}i[h>>0]=0;e=h+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[h+8>>2]=d;k[h+28>>2]=0;d=Oq((g<<2)+4|0)|0;k[h+12>>2]=d;if(!d){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[e>>2]=g;iF(d|0,0,(g<<2)+4|0)|0;ph(a,b,h,0);i[f>>0]=0;d=f+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;qh(f,h)|0;i[f>>0]=1;Mg(c,f)|0;Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);d=k[f+20>>2]|0;if(d|0)FA(d);d=k[f+24>>2]|0;if(d|0)FA(d);Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);d=k[h+20>>2]|0;if(d|0)FA(d);d=k[h+24>>2]|0;if(d|0)FA(d);u=j;return}function ph(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,j=0,l=0,m=0.0,n=0.0,o=0,q=0,r=0,s=0,t=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;ca=u;u=u+16|0;U=ca;V=k[a+8>>2]|0;W=k[b+4>>2]|0;if((k[a+4>>2]|0)!=(k[b+8>>2]|0))Oa(17024,17059,25,17159);if(V>>>0>=131073){e=Oq(V+16|0)|0;f=e+16&-16;if(!e){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}k[f+-4>>2]=e;if(!f){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}if(V>>>0>536870911){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}else $=1}else{f=u;u=u+((1*(V+15|0)|0)+15&-16)|0;$=0;f=f+15&-16}h=V<<3;if(h>>>0>=131073){e=Oq(h+16|0)|0;g=e+16&-16;if(!e){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}k[g+-4>>2]=e;if(!g){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}else Y=g}else{Y=u;u=u+((1*(h+15|0)|0)+15&-16)|0;Y=Y+15&-16}Z=Y;Q=Y;X=h>>>0>131072;h=V<<2;if(h>>>0>=131073){e=Oq(h+16|0)|0;g=e+16&-16;if(!e){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}k[g+-4>>2]=e;if(!g){ca=Kb(4)|0;cF(ca);Cc(ca|0,2032,79)}else S=g}else{S=u;u=u+((1*(h+15|0)|0)+15&-16)|0;S=S+15&-16}T=S;P=S;R=h>>>0>131072;iF(f|0,0,V|0)|0;O=a+16|0;h=k[O>>2]|0;if(h){j=k[a+4>>2]|0;if(j){if((j|0)<=-1)Oa(14697,13988,163,14058);e=k[h>>2]|0;if((j|0)!=1){g=1;do{e=(k[h+(g<<2)>>2]|0)+e|0;g=g+1|0}while((g|0)<(j|0))}}else e=0}else{e=k[a+12>>2]|0;e=(k[e+(k[a+4>>2]<<2)>>2]|0)-(k[e>>2]|0)|0}N=b+16|0;l=k[N>>2]|0;if(l){j=k[b+4>>2]|0;if(j){if((j|0)<=-1)Oa(14697,13988,163,14058);g=k[l>>2]|0;if((j|0)!=1){h=1;do{g=(k[l+(h<<2)>>2]|0)+g|0;h=h+1|0}while((h|0)<(j|0))}}else g=0}else{g=k[b+12>>2]|0;g=(k[g+(k[b+4>>2]<<2)>>2]|0)-(k[g>>2]|0)|0}K=c+28|0;k[K>>2]=0;L=c+12|0;M=c+4|0;iF(k[L>>2]|0,0,(k[M>>2]<<2)+4|0)|0;h=k[c+16>>2]|0;if(h|0)iF(h|0,0,k[M>>2]<<2|0)|0;Gg(c,g+e|0);a:do if((W|0)>0){I=b+20|0;J=b+24|0;F=b+12|0;G=a+20|0;H=a+24|0;A=a+12|0;B=(V*100|0)/139|0;C=(V|0)/11|0;D=c+20|0;z=c+24|0;E=(V|0)>0;y=0;b:while(1){g=k[L>>2]|0;e=k[g+(y<<2)>>2]|0;if((e|0)!=(k[K>>2]|0)){e=47;break}x=y;y=y+1|0;h=g+(y<<2)|0;if(k[h>>2]|0){e=49;break}k[h>>2]=e;v=k[I>>2]|0;w=k[J>>2]|0;e=k[F>>2]|0;j=k[e+(x<<2)>>2]|0;h=k[N>>2]|0;if(!h)q=k[e+(y<<2)>>2]|0;else q=(k[h+(x<<2)>>2]|0)+j|0;if((j|0)<(q|0)){r=k[G>>2]|0;s=k[H>>2]|0;t=k[A>>2]|0;o=k[O>>2]|0;if(!o){e=0;do{n=+p[v+(j<<3)>>3];a=k[w+(j<<2)>>2]|0;h=k[t+(a<<2)>>2]|0;a=k[t+(a+1<<2)>>2]|0;if((h|0)<(a|0))do{l=k[s+(h<<2)>>2]|0;b=f+l|0;m=n*+p[r+(h<<3)>>3];if(!(i[b>>0]|0)){i[b>>0]=1;p[Q+(l<<3)>>3]=m;k[P+(e<<2)>>2]=l;e=e+1|0}else{o=Q+(l<<3)|0;p[o>>3]=m+ +p[o>>3]}h=h+1|0}while((h|0)!=(a|0));j=j+1|0}while((j|0)!=(q|0));b=e}else{e=0;do{n=+p[v+(j<<3)>>3];b=k[w+(j<<2)>>2]|0;h=k[t+(b<<2)>>2]|0;b=k[o+(b<<2)>>2]|0;a=b+h|0;if((b|0)>0)do{l=k[s+(h<<2)>>2]|0;b=f+l|0;m=n*+p[r+(h<<3)>>3];if(!(i[b>>0]|0)){i[b>>0]=1;p[Q+(l<<3)>>3]=m;k[P+(e<<2)>>2]=l;e=e+1|0}else{b=Q+(l<<3)|0;p[b>>3]=m+ +p[b>>3]}h=h+1|0}while((h|0)<(a|0));j=j+1|0}while((j|0)!=(q|0));b=e}}else b=0;c:do if(!d){if((b|0)>0){e=0;while(1){x=k[P+(e<<2)>>2]|0;n=+p[Q+(x<<3)>>3];t=g+(y<<2)|0;w=k[t>>2]|0;k[t>>2]=w+1;t=k[K>>2]|0;Eg(D,t+1|0,1.0);v=k[D>>2]|0;p[v+(t<<3)>>3]=0.0;k[(k[z>>2]|0)+(t<<2)>>2]=x;p[v+(w<<3)>>3]=n;i[f+x>>0]=0;e=e+1|0;if((e|0)>=(b|0))break c;g=k[L>>2]|0}}}else{if(!((b|0)<200&(b|0)<(C|0))){if((b|0)<=-1){e=73;break b}w=b>>>1|b;w=w>>>2|w;w=w>>>4|w;w=w>>>8|w;w=2612+((aa(w>>>16|w,130329821)|0)>>>27<<2)|0;if((aa(k[w>>2]|0,b)|0)>=(B|0)){if(E)j=0;else break;while(1){e=f+j|0;if(i[e>>0]|0){i[e>>0]=0;m=+p[Q+(j<<3)>>3];e=k[L>>2]|0;g=e+(y<<2)|0;h=k[g>>2]|0;if((h|0)!=(k[K>>2]|0)){e=87;break b}if((h|0)!=(k[e+(x<<2)>>2]|0)?(k[(k[z>>2]|0)+(h+-1<<2)>>2]|0)>=(j|0):0){e=90;break b}k[g>>2]=h+1;v=k[K>>2]|0;Eg(D,v+1|0,1.0);w=k[D>>2]|0;p[w+(v<<3)>>3]=0.0;k[(k[z>>2]|0)+(v<<2)>>2]=j;p[w+(h<<3)>>3]=m}j=j+1|0;if((j|0)>=(V|0))break c}}}if((b|0)<=1)if((b|0)==1)e=0;else break;else{Tq(P,P+(b<<2)|0,U);e=0}do{g=k[P+(e<<2)>>2]|0;m=+p[Q+(g<<3)>>3];h=k[L>>2]|0;j=h+(y<<2)|0;l=k[j>>2]|0;if((l|0)!=(k[K>>2]|0)){e=80;break b}if((l|0)!=(k[h+(x<<2)>>2]|0)?(k[(k[z>>2]|0)+(l+-1<<2)>>2]|0)>=(g|0):0){e=83;break b}k[j>>2]=l+1;v=k[K>>2]|0;Eg(D,v+1|0,1.0);w=k[D>>2]|0;p[w+(v<<3)>>3]=0.0;k[(k[z>>2]|0)+(v<<2)>>2]=g;p[w+(l<<3)>>3]=m;i[f+g>>0]=0;e=e+1|0}while((e|0)<(b|0))}while(0);if((y|0)>=(W|0))break a}if((e|0)==47)Oa(16047,15958,414,16152);else if((e|0)==49)Oa(16161,15958,415,16152);else if((e|0)==73)Oa(17199,17204,1020,17280);else if((e|0)==80)Oa(16249,15958,392,16348);else if((e|0)==83)Oa(16371,15958,393,16348);else if((e|0)==87)Oa(16249,15958,392,16348);else if((e|0)==90)Oa(16371,15958,393,16348)}while(0);if((k[c+16>>2]|0)==0?(ba=k[K>>2]|0,_=k[M>>2]|0,(_|0)>-1):0){h=k[L>>2]|0;e=_;while(1){if(k[h+(e<<2)>>2]|0)break;g=e+-1|0;if((e|0)>0)e=g;else{e=g;break}}if((e|0)<(_|0))do{e=e+1|0;k[h+(e<<2)>>2]=ba}while((e|0)<(k[M>>2]|0))}if(!((S|0)==0|R^1))Pq(k[T+-4>>2]|0);if(!((Y|0)==0|X^1))Pq(k[Z+-4>>2]|0);if($<<24>>24==0|(f|0)==0){u=ca;return}Pq(k[f+-4>>2]|0);u=ca;return}function qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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=u;u=u+48|0;H=J+8|0;o=J;c=k[b+8>>2]|0;w=b+4|0;z=k[w>>2]|0;i[H>>0]=0;E=H+4|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[E+16>>2]=0;k[E+20>>2]=0;k[E+24>>2]=0;k[E+28>>2]=0;F=H+8|0;k[F>>2]=z;z=H+28|0;k[z>>2]=0;l=Oq((c<<2)+4|0)|0;k[H+12>>2]=l;if(!l){J=Kb(4)|0;cF(J);Cc(J|0,2032,79)}k[E>>2]=c;G=H+16|0;D=H+12|0;iF(l|0,0,(c<<2)+4|0)|0;if((c|0)<=-1)Oa(14697,13988,163,14058);if(c|0)iF(l|0,0,c<<2|0)|0;c=k[w>>2]|0;if((c|0)>0){h=k[b+24>>2]|0;j=k[b+12>>2]|0;g=k[b+16>>2]|0;if(!g){f=0;do{d=k[j+(f<<2)>>2]|0;f=f+1|0;e=k[j+(f<<2)>>2]|0;if((d|0)<(e|0)){c=d;do{v=l+(k[h+(c<<2)>>2]<<2)|0;k[v>>2]=(k[v>>2]|0)+1;c=c+1|0}while((c|0)!=(e|0));c=k[w>>2]|0}}while((f|0)<(c|0))}else{f=0;do{d=k[j+(f<<2)>>2]|0;v=k[g+(f<<2)>>2]|0;e=v+d|0;if((v|0)>0){c=d;do{v=l+(k[h+(c<<2)>>2]<<2)|0;k[v>>2]=(k[v>>2]|0)+1;c=c+1|0}while((c|0)<(e|0));c=k[w>>2]|0}f=f+1|0}while((f|0)<(c|0))}}c=k[E>>2]|0;k[o>>2]=0;v=o+4|0;k[v>>2]=0;Ef(o,c);c=k[E>>2]|0;g=k[D>>2]|0;a:do if((c|0)>0){f=k[o>>2]|0;e=0;c=0;while(1){t=g+(e<<2)|0;d=k[t>>2]|0;k[t>>2]=c;if((k[v>>2]|0)<=(e|0))break;k[f+(e<<2)>>2]=c;c=d+c|0;e=e+1|0;d=k[E>>2]|0;if((e|0)>=(d|0)){n=c;m=d;break a}}Oa(16605,15693,408,29907)}else{n=0;m=c}while(0);k[g+(m<<2)>>2]=n;t=H+20|0;Eg(t,n,0.0);c=k[w>>2]|0;do if((c|0)>0){r=k[o>>2]|0;s=H+24|0;n=k[s>>2]|0;o=k[t>>2]|0;j=k[b+20>>2]|0;l=k[b+24>>2]|0;m=k[b+12>>2]|0;g=k[b+16>>2]|0;b=o;q=n;h=(g|0)==0;f=0;b:while(1){d=k[m+(f<<2)>>2]|0;if(h)e=k[m+(f+1<<2)>>2]|0;else e=(k[g+(f<<2)>>2]|0)+d|0;if((d|0)<(e|0)){c=d;do{d=k[l+(c<<2)>>2]|0;if(!((d|0)>-1?(k[v>>2]|0)>(d|0):0)){c=40;break b}K=r+(d<<2)|0;d=k[K>>2]|0;k[K>>2]=d+1;k[n+(d<<2)>>2]=f;p[o+(d<<3)>>3]=+p[j+(c<<3)>>3];c=c+1|0}while((c|0)<(e|0));c=k[w>>2]|0}f=f+1|0;if((f|0)>=(c|0)){c=25;break}}if((c|0)==25){I=s;x=s;y=t;A=b;B=q;C=r;break}else if((c|0)==40)Oa(16605,15693,408,29907)}else{B=H+24|0;I=B;x=B;y=t;A=k[t>>2]|0;B=k[B>>2]|0;C=k[o>>2]|0}while(0);w=a+12|0;c=k[w>>2]|0;k[w>>2]=k[D>>2];k[D>>2]=c;w=a+8|0;K=k[w>>2]|0;k[w>>2]=k[F>>2];k[F>>2]=K;F=a+4|0;K=k[F>>2]|0;k[F>>2]=k[E>>2];k[E>>2]=K;E=a+16|0;K=k[E>>2]|0;k[E>>2]=k[G>>2];k[G>>2]=K;K=a+20|0;E=k[K>>2]|0;k[K>>2]=A;k[y>>2]=E;E=a+24|0;K=k[E>>2]|0;k[E>>2]=B;k[x>>2]=K;K=a+28|0;E=k[K>>2]|0;k[K>>2]=k[z>>2];k[z>>2]=E;E=a+32|0;K=H+32|0;F=k[E>>2]|0;k[E>>2]=k[K>>2];k[K>>2]=F;if(C){Pq(k[C+-4>>2]|0);c=k[D>>2]|0}Pq(c);Pq(k[G>>2]|0);c=k[H+20>>2]|0;if(c|0)FA(c);c=k[I>>2]|0;if(!c){u=J;return a|0}FA(c);u=J;return a|0}function rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+704|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=CA(704)|0;Tg(a,e);Pq(k[e+676>>2]|0);Pq(k[e+680>>2]|0);d=k[e+684>>2]|0;if(d|0)FA(d);d=k[e+688>>2]|0;if(d|0)FA(d);sg(e+456|0);tg(e+136|0);vg(e+8|0);u=f;return a|0}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=u;u=u+16|0;j=l;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+8>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){l=Kb(4)|0;cF(l);Cc(l|0,2032,79)}mf(a,d,c);e=k[b>>2]|0;c=k[e+8>>2]|0;d=k[i>>2]|0;f=k[d+8>>2]|0;if(!((k[g>>2]|0)==(c|0)?(k[h>>2]|0)==(f|0):0)){mf(a,c,f);c=k[g>>2]|0;f=k[h>>2]|0;e=k[b>>2]|0;d=k[i>>2]|0}if((c|f|0)<=-1)Oa(11919,12068,74,12145);c=aa(c,f)|0;if((c|0)<=0){p[j>>3]=1.0;th(e,d,a,j);u=l;return}iF(k[a>>2]|0,0,c<<3|0)|0;p[j>>3]=1.0;th(e,d,a,j);u=l;return}function th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;t=k[b+8>>2]|0;if((t|0)<=0)return;u=k[a+4>>2]|0;s=k[b>>2]|0;n=k[b+4>>2]|0;o=k[a+20>>2]|0;q=k[a+24>>2]|0;r=k[a+12>>2]|0;j=k[a+16>>2]|0;l=(j|0)==0;m=k[c>>2]|0;g=k[c+4>>2]|0;if((u|0)>0)f=0;else return;do{h=aa(n,f)|0;i=aa(g,f)|0;if(l){a=0;c=k[r>>2]|0;do{e=+p[d>>3]*+p[s+(h+a<<3)>>3];a=a+1|0;b=c;c=k[r+(a<<2)>>2]|0;if((b|0)<(c|0))do{v=m+(i+(k[q+(b<<2)>>2]|0)<<3)|0;p[v>>3]=e*+p[o+(b<<3)>>3]+ +p[v>>3];b=b+1|0}while((b|0)!=(c|0))}while((a|0)<(u|0))}else{a=0;do{e=+p[d>>3]*+p[s+(h+a<<3)>>3];b=k[r+(a<<2)>>2]|0;v=k[j+(a<<2)>>2]|0;c=v+b|0;if((v|0)>0)do{v=m+(i+(k[q+(b<<2)>>2]|0)<<3)|0;p[v>>3]=e*+p[o+(b<<3)>>3]+ +p[v>>3];b=b+1|0}while((b|0)<(c|0));a=a+1|0}while((a|0)<(u|0))}f=f+1|0}while((f|0)<(t|0));return}function uh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=sf(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function vh(a){a=a|0;return 128}function wh(a){a=a|0;if(!a)return;vg(a+8|0);EA(a);return}function xh(a){a=a|0;var b=0,c=0,d=0;d=CA(128)|0;k[d>>2]=a;i[d+8>>0]=0;k[d+12>>2]=0;a=d+20|0;i[a>>0]=0;k[d+24>>2]=-1;b=d+28|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;Dg(a,0,0);a=d+104|0;b=d+56|0;c=b+48|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));p[a>>3]=1.0;i[d+112>>0]=1;i[d+120>>0]=0;i[d+121>>0]=0;return d|0}function yh(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function zh(a){a=a|0;var b=0,c=0,d=0;if(!(i[a+120>>0]|0)){Ah(a);return}c=a+121|0;if(i[c>>0]|0)return;d=(k[a>>2]|0)+664|0;Bh(d);b=a+8|0;if(!(i[a+112>>0]|0))Mh(b,d);else Lh(b,d);if(!(i[b>>0]|0))Oa(17611,17319,109,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}function Ah(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=a+120|0;i[b>>0]=0;c=a+121|0;i[c>>0]=0;d=(k[a>>2]|0)+664|0;Bh(d);e=a+8|0;f=a+112|0;Ch(e,d,(i[f>>0]|0)!=0);if(!(i[e>>0]|0))Oa(17611,17319,109,17666);a=a+12|0;if(k[a>>2]|0)return;i[b>>0]=1;if(!(i[f>>0]|0))Mh(e,d);else Lh(e,d);if(!(i[e>>0]|0))Oa(17611,17319,109,17666);if(k[a>>2]|0)return;i[c>>0]=1;return}function Bh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0;q=k[a+16>>2]|0;if(!q)return;u=a+12|0;r=k[u>>2]|0;t=r+4|0;b=k[t>>2]|0;s=a+16|0;c=k[q>>2]|0;k[t>>2]=c;t=a+4|0;if((k[t>>2]|0)>1){n=a+24|0;o=a+20|0;m=1;do{j=m;m=m+1|0;l=r+(m<<2)|0;h=b;b=k[l>>2]|0;i=r+(j<<2)|0;j=q+(j<<2)|0;d=k[j>>2]|0;if((h|0)>(c|0)&(d|0)>0){f=k[n>>2]|0;g=k[o>>2]|0;e=0;do{d=e+h|0;k[f+(c+e<<2)>>2]=k[f+(d<<2)>>2];c=k[i>>2]|0;p[g+(c+e<<3)>>3]=+p[g+(d<<3)>>3];e=e+1|0;d=k[j>>2]|0}while((e|0)<(d|0))}c=d+c|0;k[l>>2]=c}while((m|0)<(k[t>>2]|0))}Pq(q);k[s>>2]=0;l=a+20|0;Eg(l,k[(k[u>>2]|0)+(k[t>>2]<<2)>>2]|0,0.0);g=a+32|0;h=k[a+28>>2]|0;if((k[g>>2]|0)<=(h|0))return;i=DA(h>>>0>536870911?-1:h<<3)|0;j=DA(h>>>0>1073741823?-1:h<<2)|0;if((h|0)>0){f=k[l>>2]|0;nF(i|0,f|0,h<<3|0)|0;b=a+24|0;d=k[b>>2]|0;nF(j|0,d|0,h<<2|0)|0;c=d;e=f}else{f=k[l>>2]|0;b=a+24|0;d=k[b>>2]|0;c=d;e=f}k[l>>2]=i;k[b>>2]=j;k[g>>2]=h;if(c|0)FA(d);if(!e)return;FA(f);return}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+48|0;h=j+4|0;f=j;g=k[b+8>>2]|0;if((g|0)!=(k[b+4>>2]|0))Oa(17300,17319,232,17410);i[h>>0]=0;d=h+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[h+8>>2]=g;k[h+28>>2]=0;e=Oq((g<<2)+4|0)|0;k[h+12>>2]=e;if(!e){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[d>>2]=g;iF(e|0,0,(g<<2)+4|0)|0;Dh(a,b,f,h);Eh(a,k[f>>2]|0,c);Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);a=k[h+20>>2]|0;if(a|0)FA(a);a=k[h+24>>2]|0;if(!a){u=j;return}FA(a);u=j;return}function Dh(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,j=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;j=o;n=k[b+8>>2]|0;if((n|0)!=(k[b+4>>2]|0))Oa(17300,17319,652,17425);k[c>>2]=d;i[j>>0]=0;c=j+4|0;k[c>>2]=-1;e=j+8|0;f=j+12|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;e=Oq(4)|0;k[f>>2]=e;if(!e){o=Kb(4)|0;cF(o);Cc(o|0,2032,79)}k[c>>2]=0;l=b+8|0;g=k[l>>2]|0;m=b+4|0;h=k[m>>2]|0;k[e>>2]=0;if((g|0)!=(h|0))Oa(17434,17499,64,17589);Gh(b,j,0);e=a+80|0;Fh(o+36|0,j,e);Pq(k[f>>2]|0);Pq(k[j+16>>2]|0);c=k[j+20>>2]|0;if(c|0)FA(c);c=k[j+24>>2]|0;if(c|0)FA(c);c=k[a+84>>2]|0;if((c|0)>0){k[j>>2]=0;g=j+4|0;k[g>>2]=0;Ef(j,c);f=k[g>>2]|0;h=k[j>>2]|0;if((f|0)>0){e=k[e>>2]|0;c=0;do{k[h+(k[e+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(f|0));f=k[g>>2]|0}c=a+72|0;e=a+76|0;if((k[e>>2]|0)!=(f|0)?(Ng(c,f,1),(k[e>>2]|0)!=(f|0)):0)Oa(12160,12207,721,12285);e=k[c>>2]|0;if((f|0)>0){c=0;do{k[e+(c<<2)>>2]=k[h+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[j>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}else{c=a+76|0;if(k[c>>2]|0){e=a+72|0;f=k[e>>2]|0;if(f|0)Pq(k[f+-4>>2]|0);k[e>>2]=0}k[c>>2]=0}Dg(d,n,n);if((k[l>>2]|0)!=(k[m>>2]|0))Oa(17434,17499,64,17589);if((k[d+8>>2]|0)==(k[d+4>>2]|0)){Kh(b,d,k[a+72>>2]|0);u=o;return}else Oa(17434,17499,64,17589)}function Eh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;B=k[b+8>>2]|0;Dg(a+12|0,B,B);w=a+56|0;Ef(w,B);C=a+64|0;Ef(C,B);if(B>>>0>1073741823){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}f=B<<2;if(f>>>0>=131073){d=Oq(f+16|0)|0;e=d+16&-16;if(!d){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}k[e+-4>>2]=d;if(!e){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}else y=e}else{y=u;u=u+((1*(f+15|0)|0)+15&-16)|0;y=y+15&-16}z=y;t=y;x=f>>>0>131072;v=(B|0)>0;a:do if(v){p=a+60|0;q=a+68|0;r=k[b+24>>2]|0;s=k[b+12>>2]|0;m=k[b+16>>2]|0;b:do if(!m){g=0;c:while(1){if((k[p>>2]|0)<=(g|0)){d=28;break}j=k[w>>2]|0;k[j+(g<<2)>>2]=-1;k[t+(g<<2)>>2]=g;if((k[q>>2]|0)<=(g|0)){d=30;break}l=k[C>>2]|0;k[l+(g<<2)>>2]=0;d=k[s+(g<<2)>>2]|0;h=g;g=g+1|0;m=k[s+(g<<2)>>2]|0;if((d|0)<(m|0))do{e=k[r+(d<<2)>>2]|0;if((e|0)<(h|0)?(o=t+(e<<2)|0,(k[o>>2]|0)!=(h|0)):0){b=o;do{if((e|0)<=-1){d=37;break c}if((k[p>>2]|0)<=(e|0)){d=37;break c}f=j+(e<<2)|0;if((k[f>>2]|0)==-1)k[f>>2]=h;if((k[q>>2]|0)<=(e|0)){d=41;break c}n=l+(e<<2)|0;k[n>>2]=(k[n>>2]|0)+1;k[b>>2]=h;if((k[p>>2]|0)<=(e|0)){d=43;break c}e=k[f>>2]|0;b=t+(e<<2)|0}while((k[b>>2]|0)!=(h|0))}d=d+1|0}while((d|0)<(m|0));if((g|0)>=(B|0))break b}if((d|0)==28)Oa(16605,15693,408,29907);else if((d|0)==30)Oa(16605,15693,408,29907);else if((d|0)==37)Oa(16605,15693,408,29907);else if((d|0)==41)Oa(16605,15693,408,29907);else if((d|0)==43)Oa(16605,15693,408,29907)}else{g=0;d:while(1){if((k[p>>2]|0)<=(g|0)){d=28;break}j=k[w>>2]|0;k[j+(g<<2)>>2]=-1;k[t+(g<<2)>>2]=g;if((k[q>>2]|0)<=(g|0)){d=30;break}l=k[C>>2]|0;k[l+(g<<2)>>2]=0;d=k[s+(g<<2)>>2]|0;o=k[m+(g<<2)>>2]|0;h=o+d|0;if((o|0)>0)do{e=k[r+(d<<2)>>2]|0;if((e|0)<(g|0)?(n=t+(e<<2)|0,(k[n>>2]|0)!=(g|0)):0){b=n;do{if((e|0)<=-1){d=37;break d}if((k[p>>2]|0)<=(e|0)){d=37;break d}f=j+(e<<2)|0;if((k[f>>2]|0)==-1)k[f>>2]=g;if((k[q>>2]|0)<=(e|0)){d=41;break d}o=l+(e<<2)|0;k[o>>2]=(k[o>>2]|0)+1;k[b>>2]=g;if((k[p>>2]|0)<=(e|0)){d=43;break d}e=k[f>>2]|0;b=t+(e<<2)|0}while((k[b>>2]|0)!=(g|0))}d=d+1|0}while((d|0)<(h|0));g=g+1|0;if((g|0)>=(B|0))break b}if((d|0)==28)Oa(16605,15693,408,29907);else if((d|0)==30)Oa(16605,15693,408,29907);else if((d|0)==37)Oa(16605,15693,408,29907);else if((d|0)==41)Oa(16605,15693,408,29907);else if((d|0)==43)Oa(16605,15693,408,29907)}while(0);g=k[a+24>>2]|0;k[g>>2]=0;if(v){b=a+68|0;f=(c^1)&1;d=0;e=0;while(1){if((k[b>>2]|0)<=(d|0))break;e=e+f+(k[(k[C>>2]|0)+(d<<2)>>2]|0)|0;d=d+1|0;k[g+(d<<2)>>2]=e;if((d|0)>=(B|0)){A=g;break a}}Oa(16605,15693,408,29907)}else A=g}else{A=k[a+24>>2]|0;k[A>>2]=0}while(0);Eg(a+32|0,k[A+(B<<2)>>2]|0,0.0);i[a>>0]=1;k[a+4>>2]=0;i[a+9>>0]=1;i[a+8>>0]=0;if((y|0)==0|x^1){u=D;return}Pq(k[z+-4>>2]|0);u=D;return}function Fh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+48|0;f=g;i[f>>0]=0;a=f+4|0;k[a>>2]=-1;e=f+8|0;d=f+12|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;e=Oq(4)|0;k[d>>2]=e;if(!e){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[a>>2]=0;k[e>>2]=0;Hh(b,f);Ih(f,c);Pq(k[d>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function Gh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+16|0;x=C;A=k[a+8>>2]|0;k[x>>2]=0;B=x+4|0;k[B>>2]=0;Ef(x,A);d=k[B>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[x>>2]|0,0,d<<2|0)|0;Dg(b,A,A);t=(A|0)>0;a:do if(t){m=(c|0)!=0;n=k[a+24>>2]|0;o=k[a+12>>2]|0;q=k[a+16>>2]|0;r=(q|0)==0;s=k[x>>2]|0;j=0;b:while(1){if(m)i=k[c+(j<<2)>>2]|0;else i=j;d=k[o+(j<<2)>>2]|0;if(r)l=k[o+(j+1<<2)>>2]|0;else l=(k[q+(j<<2)>>2]|0)+d|0;c:do if((d|0)<(l|0)){g=(i|0)>-1;if(m){f=d;while(1){e=k[n+(f<<2)>>2]|0;d=k[c+(e<<2)>>2]|0;if((e|0)==(j|0))if((d|0)>-1?(k[B>>2]|0)>(d|0):0)y=24;else{y=38;break b}else if((e|0)>(j|0)){if(!((d|0)>-1?(k[B>>2]|0)>(d|0):0)){y=41;break b}y=s+(d<<2)|0;k[y>>2]=(k[y>>2]|0)+1;if(g&(k[B>>2]|0)>(i|0)){d=i;y=24}else{y=43;break b}}if((y|0)==24){y=0;w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1}f=f+1|0;if((f|0)>=(l|0))break c}}h=(j|0)>-1;if(g)e=d;else{f=s+(j<<2)|0;while(1){e=k[n+(d<<2)>>2]|0;if((e|0)!=(j|0)){if((e|0)>(j|0)){y=40;break b}}else{if(!(h&(k[B>>2]|0)>(j|0))){y=38;break b}k[f>>2]=(k[f>>2]|0)+1}d=d+1|0;if((d|0)>=(l|0))break c}}do{d=k[n+(e<<2)>>2]|0;if((d|0)==(j|0))if(h&(k[B>>2]|0)>(j|0)){d=j;y=33}else{y=38;break b}else if((d|0)>(j|0)){if(!((d|0)>-1?(k[B>>2]|0)>(d|0):0)){y=41;break b}y=s+(d<<2)|0;k[y>>2]=(k[y>>2]|0)+1;if((k[B>>2]|0)>(i|0)){d=i;y=33}else{y=43;break b}}if((y|0)==33){y=0;w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1}e=e+1|0}while((e|0)<(l|0))}while(0);j=j+1|0;if((j|0)>=(A|0))break a}if((y|0)==38)Oa(16605,15693,408,29907);else if((y|0)==40){if(!((e|0)>-1?(k[B>>2]|0)>(e|0):0))Oa(16605,15693,408,29907);w=s+(e<<2)|0;k[w>>2]=(k[w>>2]|0)+1;Oa(16605,15693,408,29907)}else if((y|0)==41)Oa(16605,15693,408,29907);else if((y|0)==43)Oa(16605,15693,408,29907)}while(0);f=k[B>>2]|0;if(f){if((f|0)<=0)Oa(13148,13216,413,13284);g=k[x>>2]|0;d=k[g>>2]|0;if((f|0)!=1){e=1;do{d=(k[g+(e<<2)>>2]|0)+d|0;e=e+1|0}while((e|0)<(f|0))}}else d=0;Eg(b+20|0,d,0.0);e=b+12|0;f=k[e>>2]|0;k[f>>2]=0;d:do if(t){g=k[x>>2]|0;d=0;h=0;do{if((k[B>>2]|0)<=(d|0)){y=51;break}h=(k[g+(d<<2)>>2]|0)+h|0;d=d+1|0;k[f+(d<<2)>>2]=h}while((d|0)<(A|0));if((y|0)==51)Oa(16605,15693,408,29907);if(t){e=k[e>>2]|0;f=k[x>>2]|0;d=0;do{if((k[B>>2]|0)<=(d|0)){y=57;break}k[f+(d<<2)>>2]=k[e+(d<<2)>>2];d=d+1|0}while((d|0)<(A|0));if((y|0)==57)Oa(16605,15693,408,29907);if(t){t=k[a+20>>2]|0;v=k[a+24>>2]|0;w=k[a+12>>2]|0;q=k[a+16>>2]|0;r=(q|0)==0;s=(c|0)==0;n=k[x>>2]|0;o=k[b+24>>2]|0;m=k[b+20>>2]|0;j=0;e:while(1){d=k[w+(j<<2)>>2]|0;if(r)l=k[w+(j+1<<2)>>2]|0;else l=(k[q+(j<<2)>>2]|0)+d|0;f:do if((d|0)<(l|0)){h=c+(j<<2)|0;if(!s){g=d;while(1){d=k[v+(g<<2)>>2]|0;e=k[h>>2]|0;f=k[c+(d<<2)>>2]|0;if((d|0)!=(j|0)){if((d|0)>(j|0)){if(!((e|0)>-1?(k[B>>2]|0)>(e|0):0)){y=84;break e}d=n+(e<<2)|0;y=k[d>>2]|0;k[d>>2]=y+1;k[o+(y<<2)>>2]=f;d=t+(g<<3)|0;p[m+(y<<3)>>3]=+p[d>>3];if(!((f|0)>-1?(k[B>>2]|0)>(f|0):0)){y=86;break e}b=n+(f<<2)|0;y=k[b>>2]|0;k[b>>2]=y+1;k[o+(y<<2)>>2]=e;e=y;y=88}}else{if(!((f|0)>-1?(k[B>>2]|0)>(f|0):0)){y=80;break e}d=n+(f<<2)|0;e=k[d>>2]|0;k[d>>2]=e+1;k[o+(e<<2)>>2]=f;d=t+(g<<3)|0;y=88}if((y|0)==88){y=0;p[m+(e<<3)>>3]=+p[d>>3]}g=g+1|0;if((g|0)>=(l|0))break f}}g=(j|0)>-1;h=n+(j<<2)|0;i=n+(j<<2)|0;do{f=k[v+(d<<2)>>2]|0;if((f|0)!=(j|0)){if((f|0)>(j|0)){if((k[B>>2]|0)<=(j|0)){y=84;break e}y=k[i>>2]|0;k[i>>2]=y+1;k[o+(y<<2)>>2]=f;e=t+(d<<3)|0;p[m+(y<<3)>>3]=+p[e>>3];if(!((f|0)>-1?(k[B>>2]|0)>(f|0):0)){y=86;break e}y=n+(f<<2)|0;f=k[y>>2]|0;k[y>>2]=f+1;k[o+(f<<2)>>2]=j;y=75}}else{if(!(g&(k[B>>2]|0)>(j|0))){y=80;break e}f=k[h>>2]|0;k[h>>2]=f+1;k[o+(f<<2)>>2]=j;e=t+(d<<3)|0;y=75}if((y|0)==75){y=0;p[m+(f<<3)>>3]=+p[e>>3]}d=d+1|0}while((d|0)<(l|0))}while(0);j=j+1|0;if((j|0)>=(A|0)){z=n;break d}}if((y|0)==80)Oa(16605,15693,408,29907);else if((y|0)==84)Oa(16605,15693,408,29907);else if((y|0)==86)Oa(16605,15693,408,29907)}else y=54}else y=54}else y=54;while(0);if((y|0)==54)z=k[x>>2]|0;if(!z){u=C;return}Pq(k[z+-4>>2]|0);u=C;return}function Hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+64|0;o=p+16|0;m=p;i[o>>0]=0;c=o+4|0;k[c>>2]=-1;d=o+8|0;n=o+12|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;e=Oq(4)|0;k[n>>2]=e;if(!e){p=Kb(4)|0;cF(p);Cc(p|0,2032,79)}k[c>>2]=0;l=o+16|0;k[e>>2]=0;i[m>>0]=0;k[m+4>>2]=a;Vg(o,m)|0;g=k[d>>2]|0;if((g|0)>0){h=k[o+20>>2]|0;j=k[o+12>>2]|0;d=k[o+16>>2]|0;if(!d){c=0;do{d=k[j+(c<<2)>>2]|0;c=c+1|0;e=k[j+(c<<2)>>2]|0;if((e|0)>(d|0))iF(h+(d<<3)|0,0,e-d<<3|0)|0}while((c|0)<(g|0))}else{c=0;do{e=k[j+(c<<2)>>2]|0;q=k[d+(c<<2)>>2]|0;f=q+e|0;if((q|0)>0){q=e+1|0;iF(h+(e<<3)|0,0,((f|0)>(q|0)?f:q)-e<<3|0)|0}c=c+1|0}while((c|0)<(g|0))}}i[m>>0]=0;k[m+4>>2]=o;k[m+8>>2]=a;if((k[o+8>>2]|0)!=(k[a+8>>2]|0))Oa(14550,14607,110,14683);if((k[o+4>>2]|0)!=(k[a+4>>2]|0))Oa(14550,14607,110,14683);fh(b,m)|0;Pq(k[n>>2]|0);Pq(k[l>>2]|0);c=k[o+20>>2]|0;if(c|0)FA(c);c=k[o+24>>2]|0;if(!c){u=p;return}FA(c);u=p;return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;ka=u;u=u+16|0;Z=ka;ia=k[a+4>>2]|0;e=~~(+Q(+(+(ia|0)))*10.0);e=(e|0)>16?e:16;m=ia+-2|0;m=(e|0)<(m|0)?e:m;e=k[a+16>>2]|0;if(e)if(ia){if((ia|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((ia|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(ia|0))}}else c=0;else{c=k[a+12>>2]|0;c=(k[c+(ia<<2)>>2]|0)-(k[c>>2]|0)|0}ha=ia+1|0;Ef(b,ha);X=c+(ia<<1)+((c|0)/5|0)|0;Eg(a+20|0,X,0.0);if(((ia<<3)+8|0)>>>0>1073741823){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}d=ia<<5;if((d+32|0)>>>0>=131073){d=Oq(d+48|0)|0;e=d+16&-16;if(!d){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}k[e+-4>>2]=d;if(!e){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}}else{e=u;u=u+((1*(d+47|0)|0)+15&-16)|0;e=e+15&-16}ba=e;O=e;ca=ha<<5>>>0>131072;Y=O+(ha<<2)|0;P=ha<<1;da=O+(P<<2)|0;R=ha*3|0;ea=O+(R<<2)|0;S=O+(ha<<2<<2)|0;T=O+(ha*5<<2)|0;fa=O+(ha*6<<2)|0;U=O+(ha*7<<2)|0;V=k[b>>2]|0;ga=k[a+12>>2]|0;M=k[a+24>>2]|0;N=(ia|0)>0;if(N){d=0;do{W=d;d=d+1|0;k[O+(W<<2)>>2]=(k[ga+(d<<2)>>2]|0)-(k[ga+(W<<2)>>2]|0)}while((d|0)!=(ia|0))}k[O+(ia<<2)>>2]=0;W=(ia|0)<0;if(!W){d=0;do{k[ea+(d<<2)>>2]=-1;k[V+(d<<2)>>2]=-1;k[da+(d<<2)>>2]=-1;k[U+(d<<2)>>2]=-1;k[Y+(d<<2)>>2]=1;k[fa+(d<<2)>>2]=1;k[S+(d<<2)>>2]=0;k[T+(d<<2)>>2]=k[O+(d<<2)>>2];d=d+1|0}while((d|0)!=(ha|0))}a:do if(N){d=0;do{a=fa+(d<<2)|0;if(k[a>>2]|0)k[a>>2]=1;d=d+1|0}while((d|0)!=(ia|0));if(N){j=-2-ia|0;l=Y+(ia<<2)|0;d=0;a=0;do{i=a;b:while(1){h=ga+(i<<2)|0;f=k[h>>2]|0;a=i+1|0;g=k[ga+(a<<2)>>2]|0;if((f|0)>=(g|0)){_=29;break}while(1){if((k[M+(f<<2)>>2]|0)==(i|0))break;f=f+1|0;if((f|0)>=(g|0)){_=29;break b}}f=k[T+(i<<2)>>2]|0;k[Z>>2]=f;if((f|0)==1){_=31;break}if((f|0)>(m|0)){_=33;break}f=ea+(f<<2)|0;g=k[f>>2]|0;if((g|0)==-1)f=-1;else{k[V+(g<<2)>>2]=i;f=k[f>>2]|0}k[da+(i<<2)>>2]=f;k[ea+(k[Z>>2]<<2)>>2]=i;if((a|0)<(ia|0))i=a;else break a}if((_|0)==29){k[Z>>2]=k[T+(i<<2)>>2];_=33}else if((_|0)==31){_=0;k[S+(i<<2)>>2]=-2;k[h>>2]=-1;k[fa+(i<<2)>>2]=0}if((_|0)==33){_=0;k[Y+(i<<2)>>2]=0;k[S+(i<<2)>>2]=-1;k[h>>2]=j;k[l>>2]=(k[l>>2]|0)+1}d=d+1|0}while((a|0)<(ia|0))}else d=0}else d=0;while(0);k[S+(ia<<2)>>2]=-2;k[ga+(ia<<2)>>2]=-1;k[fa+(ia<<2)>>2]=0;if((d|0)<(ia|0)){L=N^1;z=2;K=0;f=0;while(1){c:do if((f|0)<(ia|0))while(1){a=k[ea+(f<<2)>>2]|0;if((a|0)!=-1)break c;f=f+1|0;if((f|0)>=(ia|0)){a=-1;break}}else a=-1;while(0);g=da+(a<<2)|0;h=k[g>>2]|0;if((h|0)==-1)g=-1;else{k[V+(h<<2)>>2]=-1;g=k[g>>2]|0}k[ea+(f<<2)>>2]=g;y=S+(a<<2)|0;x=k[y>>2]|0;J=Y+(a<<2)|0;C=k[J>>2]|0;d=C+d|0;d:do if(!((f+c|0)<(X|0)|(x|0)<1)){if(N){i=0;do{g=ga+(i<<2)|0;I=k[g>>2]|0;h=M+(I<<2)|0;if((I|0)>-1){k[g>>2]=k[h>>2];k[h>>2]=-2-i}i=i+1|0}while((i|0)!=(ia|0));i=0;g=0}else{i=0;g=0}e:while(1){do{if((g|0)>=(c|0)){c=i;break d}h=g;g=g+1|0;h=-2-(k[M+(h<<2)>>2]|0)|0}while((h|0)<=-1);l=ga+(h<<2)|0;k[M+(i<<2)>>2]=k[l>>2];k[l>>2]=i;i=i+1|0;l=O+(h<<2)|0;if((k[l>>2]|0)>1)h=0;else continue;while(1){j=g+1|0;k[M+(i<<2)>>2]=k[M+(g<<2)>>2];g=h+1|0;i=i+1|0;if((g|0)<((k[l>>2]|0)+-1|0)){h=g;g=j}else{g=j;continue e}}}}while(0);k[J>>2]=0-C;H=ga+(a<<2)|0;g=k[H>>2]|0;I=(x|0)==0?g:c;G=O+(a<<2)|0;if((x|0)<0){j=0;E=I}else{v=-2-a|0;w=x+1|0;t=1;i=I;h=0;while(1){if((t|0)>(x|0)){s=a;r=(k[G>>2]|0)-x|0;j=g}else{j=k[M+(g<<2)>>2]|0;s=j;r=k[O+(j<<2)>>2]|0;j=k[ga+(j<<2)>>2]|0;g=g+1|0}if((r|0)>=1){q=1;while(1){o=k[M+(j<<2)>>2]|0;j=j+1|0;l=Y+(o<<2)|0;p=k[l>>2]|0;if((p|0)>=1){k[l>>2]=0-p;k[M+(i<<2)>>2]=o;n=da+(o<<2)|0;l=k[n>>2]|0;if((l|0)==-1){m=V+(o<<2)|0;l=-1}else{m=V+(o<<2)|0;k[V+(l<<2)>>2]=k[m>>2];l=k[n>>2]|0}F=(k[m>>2]|0)==-1;k[O+((F?R:P)<<2)+(k[(F?T+(o<<2)|0:m)>>2]<<2)>>2]=l;i=i+1|0;h=p+h|0}if((q|0)==(r|0))break;else q=q+1|0}}if((s|0)!=(a|0)){k[ga+(s<<2)>>2]=v;k[fa+(s<<2)>>2]=0}if((t|0)==(w|0)){j=h;E=i;break}else t=t+1|0}}F=(x|0)!=0;B=T+(a<<2)|0;k[B>>2]=j;k[H>>2]=I;k[G>>2]=E-I;k[y>>2]=-2;g=(z|0)>1&(z+K|0)>-1;if(g|L)A=g?z:2;else{g=0;do{h=fa+(g<<2)|0;if(k[h>>2]|0)k[h>>2]=1;g=g+1|0}while((g|0)!=(ia|0));A=2}D=(E|0)>(I|0);if(D){o=I;do{g=k[M+(o<<2)>>2]|0;p=k[S+(g<<2)>>2]|0;if((p|0)>=1){q=k[Y+(g<<2)>>2]|0;r=q+A|0;n=ga+(g<<2)|0;g=k[n>>2]|0;m=g;do{h=k[M+(m<<2)>>2]|0;l=fa+(h<<2)|0;i=k[l>>2]|0;do if((i|0)<(A|0)){if(!i)break;g=r+(k[T+(h<<2)>>2]|0)|0;_=84}else{g=i+q|0;_=84}while(0);if((_|0)==84){_=0;k[l>>2]=g;g=k[n>>2]|0}m=m+1|0}while((m|0)<(g+p|0))}o=o+1|0}while((o|0)!=(E|0));if(D){z=-2-a|0;i=C;y=I;do{x=k[M+(y<<2)>>2]|0;v=ga+(x<<2)|0;w=k[v>>2]|0;g=S+(x<<2)|0;C=k[g>>2]|0;t=C+w|0;k[Z>>2]=0;if((C|0)>0){h=0;l=w;p=w;do{n=k[M+(p<<2)>>2]|0;o=fa+(n<<2)|0;m=k[o>>2]|0;do if(m){m=m-A|0;if((m|0)>0){k[Z>>2]=(k[Z>>2]|0)+m;k[M+(l<<2)>>2]=n;h=n+h|0;l=l+1|0;break}else{k[ga+(n<<2)>>2]=z;k[o>>2]=0;break}}while(0);p=p+1|0}while((p|0)<(t|0));q=l}else{h=0;q=w}r=1-w|0;k[g>>2]=r+q;s=O+(x<<2)|0;p=(k[s>>2]|0)+w|0;if((t|0)<(p|0)){m=q;o=t;do{l=k[M+(o<<2)>>2]|0;n=k[Y+(l<<2)>>2]|0;if((n|0)>=1){k[Z>>2]=(k[Z>>2]|0)+n;k[M+(m<<2)>>2]=l;h=l+h|0;m=m+1|0}o=o+1|0}while((o|0)!=(p|0))}else m=q;l=k[Z>>2]|0;if(!l){k[v>>2]=z;C=Y+(x<<2)|0;h=k[C>>2]|0;k[C>>2]=0;i=i-h|0;d=d-h|0;j=h+j|0;h=-1}else{C=T+(x<<2)|0;g=k[C>>2]|0;k[C>>2]=(l|0)<(g|0)?l:g;C=M+(q<<2)|0;k[M+(m<<2)>>2]=k[C>>2];g=M+(w<<2)|0;k[C>>2]=k[g>>2];k[g>>2]=a;k[s>>2]=r+m;h=(h|0)%(ia|0)|0;g=U+(h<<2)|0;k[da+(x<<2)>>2]=k[g>>2];k[g>>2]=x;g=V+(x<<2)|0}k[g>>2]=h;y=y+1|0}while((y|0)!=(E|0));w=i;v=j}else{w=C;v=j}}else{w=C;v=j}k[B>>2]=v;K=(K|0)<(v|0)?v:K;g=K+A|0;h=(g|0)>1&(g+K|0)>-1;if(h|L)g=h?g:2;else{g=0;do{h=fa+(g<<2)|0;if(k[h>>2]|0)k[h>>2]=1;g=g+1|0}while((g|0)!=(ia|0));g=2}if(D){t=I;do{h=k[M+(t<<2)>>2]|0;f:do if((k[Y+(h<<2)>>2]|0)<=-1){C=U+(k[V+(h<<2)>>2]<<2)|0;h=k[C>>2]|0;k[C>>2]=-1;if((h|0)==-1)break;while(1){p=da+(h<<2)|0;i=k[p>>2]|0;if((i|0)==-1)break f;q=k[O+(h<<2)>>2]|0;r=k[S+(h<<2)>>2]|0;l=ga+(h<<2)|0;j=k[l>>2]|0;s=q+-1|0;if((j|0)<(s+j|0)){i=j;do{i=i+1|0;k[fa+(k[M+(i<<2)>>2]<<2)>>2]=g}while((i|0)<(s+(k[l>>2]|0)|0));i=k[p>>2]|0;if((i|0)==-1)break}n=-2-h|0;o=Y+(h<<2)|0;g:do{m=da+(h<<2)|0;h=i;h:while(1){if((k[O+(h<<2)>>2]|0)!=(q|0))break;j=ga+(h<<2)|0;i=k[j>>2]|0;if((k[S+(h<<2)>>2]|0)!=(r|0))break;l=s+i|0;while(1){if((i|0)>=(l|0))break;i=i+1|0;if((k[fa+(k[M+(i<<2)>>2]<<2)>>2]|0)!=(g|0))break h}k[j>>2]=n;C=Y+(h<<2)|0;k[o>>2]=(k[o>>2]|0)+(k[C>>2]|0);k[C>>2]=0;k[S+(h<<2)>>2]=-1;h=k[da+(h<<2)>>2]|0;k[m>>2]=h;if((h|0)==-1)break g}i=k[da+(h<<2)>>2]|0}while((i|0)!=-1);h=k[p>>2]|0;g=g+1|0;if((h|0)==-1)break f}g=g+1|0}while(0);t=t+1|0}while((t|0)!=(E|0));if(D){o=ia-d|0;h=I;n=I;do{m=k[M+(n<<2)>>2]|0;i=Y+(m<<2)|0;j=k[i>>2]|0;if((j|0)<=-1){k[i>>2]=0-j;l=T+(m<<2)|0;i=j+v+(k[l>>2]|0)|0;j=j+o|0;i=(j|0)<(i|0)?j:i;k[Z>>2]=i;i=ea+(i<<2)|0;j=k[i>>2]|0;if((j|0)==-1)i=-1;else{k[V+(j<<2)>>2]=m;i=k[i>>2]|0}k[da+(m<<2)>>2]=i;k[V+(m<<2)>>2]=-1;k[ea+(k[Z>>2]<<2)>>2]=m;D=k[Z>>2]|0;k[l>>2]=D;k[M+(h<<2)>>2]=m;h=h+1|0;f=(D|0)<(f|0)?D:f}n=n+1|0}while((n|0)!=(E|0))}else h=I}else h=I;k[J>>2]=w;J=h-I|0;k[G>>2]=J;if(!J){k[H>>2]=-1;k[fa+(a<<2)>>2]=0}if((ia|0)<=(d|0))break;else{z=g;c=F?h:c}}}if(N){c=0;do{_=ga+(c<<2)|0;k[_>>2]=-2-(k[_>>2]|0);c=c+1|0}while((c|0)!=(ia|0))}if(!W){iF(ba+((ia*12|0)+12)|0,-1,(ia<<2)+4|0)|0;c=ia;while(1){if((k[Y+(c<<2)>>2]|0)<=0){_=ga+(c<<2)|0;k[da+(c<<2)>>2]=k[ea+(k[_>>2]<<2)>>2];k[ea+(k[_>>2]<<2)>>2]=c}if((c|0)>0)c=c+-1|0;else{c=ia;break}}while(1){if((k[Y+(c<<2)>>2]|0)>=1?($=ga+(c<<2)|0,aa=k[$>>2]|0,(aa|0)!=-1):0){k[da+(c<<2)>>2]=k[ea+(aa<<2)>>2];k[ea+(k[$>>2]<<2)>>2]=c}if((c|0)>0)c=c+-1|0;else break}if(!W?(ja=k[b>>2]|0,ja|0):0){c=0;i=0;do{i:do if((k[ga+(i<<2)>>2]|0)==-1){k[fa>>2]=i;f=0;d=i;while(1){a=ea+(d<<2)|0;g=k[a>>2]|0;if((g|0)==-1){h=f+-1|0;a=c+1|0;c=ja+(c<<2)|0}else{k[a>>2]=k[da+(g<<2)>>2];aa=f+1|0;h=aa;a=c;d=g;c=fa+(aa<<2)|0}k[c>>2]=d;if((h|0)<=-1){c=a;break i}c=a;f=h;d=k[fa+(h<<2)>>2]|0}}while(0);i=i+1|0}while((i|0)!=(ha|0))}}Jh(b,ia,ia,1);if((e|0)==0|ca^1){u=ka;return}Pq(k[ba+-4>>2]|0);u=ka;return}function Jh(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;g=k[a>>2]|0;i=a+4|0;if(b>>>0>1073741823){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}if((k[i>>2]|0)>>>0>1073741823){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}h=b<<2;if(!g){b=Oq(h+16|0)|0;d=b+16&-16;if(!b)d=0;else k[d+-4>>2]=b}else{b=k[g+-4>>2]|0;e=Qq(b,h+16|0)|0;if(!e)d=0;else{f=e+16&-16;d=f;b=e+(g-b)|0;if((d|0)!=(b|0))vF(d|0,b|0,h|0)|0;k[f+-4>>2]=e}}if((h|0)!=0&(d|0)==0){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}else{k[a>>2]=d;k[i>>2]=c;return}}function Kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+16|0;w=A;x=k[a+8>>2]|0;k[w>>2]=0;y=w+4|0;k[y>>2]=0;Ef(w,x);d=k[y>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[w>>2]|0,0,d<<2|0)|0;Dg(b,x,x);r=(x|0)>0;a:do if(r){i=k[a+24>>2]|0;j=k[a+12>>2]|0;l=k[a+16>>2]|0;m=(l|0)==0;n=k[w>>2]|0;b:do if(!c){f=0;c:while(1){d=k[j+(f<<2)>>2]|0;if(m)g=k[j+(f+1<<2)>>2]|0;else g=(k[l+(f<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{e=k[i+(d<<2)>>2]|0;if((e|0)>=(f|0)){if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0))break c;t=n+(e<<2)|0;k[t>>2]=(k[t>>2]|0)+1}d=d+1|0}while((d|0)<(g|0));f=f+1|0;if((f|0)>=(x|0))break b}Oa(16605,15693,408,29907)}else{f=0;d:while(1){h=k[c+(f<<2)>>2]|0;d=k[j+(f<<2)>>2]|0;if(m)g=k[j+(f+1<<2)>>2]|0;else g=(k[l+(f<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{e=k[i+(d<<2)>>2]|0;if((e|0)>=(f|0)){e=k[c+(e<<2)>>2]|0;e=(e|0)<(h|0)?h:e;if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0))break d;t=n+(e<<2)|0;k[t>>2]=(k[t>>2]|0)+1}d=d+1|0}while((d|0)<(g|0));f=f+1|0;if((f|0)>=(x|0))break b}Oa(16605,15693,408,29907)}while(0);f=b+12|0;d=k[f>>2]|0;k[d>>2]=0;if(r){g=k[w>>2]|0;h=k[f>>2]|0;e=0;while(1){if((k[y>>2]|0)<=(e|0))break;t=e;e=e+1|0;k[d+(e<<2)>>2]=(k[g+(t<<2)>>2]|0)+(k[d+(t<<2)>>2]|0);if((e|0)>=(x|0)){o=h;q=f;break a}else d=h}Oa(16605,15693,408,29907)}else{o=d;q=f}}else{q=b+12|0;o=k[q>>2]|0;k[o>>2]=0}while(0);Eg(b+20|0,k[o+(x<<2)>>2]|0,0.0);e:do if(r){e=k[q>>2]|0;f=k[w>>2]|0;d=0;do{if((k[y>>2]|0)<=(d|0)){z=49;break}k[f+(d<<2)>>2]=k[e+(d<<2)>>2];d=d+1|0}while((d|0)<(x|0));if((z|0)==49)Oa(16605,15693,408,29907);if(r){r=k[a+20>>2]|0;s=k[a+24>>2]|0;t=k[a+12>>2]|0;l=k[a+16>>2]|0;n=(c|0)==0;o=k[w>>2]|0;q=k[b+24>>2]|0;m=k[b+20>>2]|0;if(!l){i=0;f:while(1){d=k[t+(i<<2)>>2]|0;j=i;i=i+1|0;l=k[t+(i<<2)>>2]|0;if((d|0)<(l|0)){h=c+(j<<2)|0;if(n)do{e=k[s+(d<<2)>>2]|0;if((e|0)>=(j|0)){if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0)){z=63;break f}a=o+(e<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[q+(b<<2)>>2]=(j|0)<(e|0)?j:e;p[m+(b<<3)>>3]=+p[r+(d<<3)>>3]}d=d+1|0}while((d|0)<(l|0));else do{e=k[s+(d<<2)>>2]|0;if((e|0)>=(j|0)){g=k[h>>2]|0;f=k[c+(e<<2)>>2]|0;e=(f|0)<(g|0)?g:f;if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0)){z=63;break f}a=o+(e<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[q+(b<<2)>>2]=(g|0)<(f|0)?g:f;p[m+(b<<3)>>3]=+p[r+(d<<3)>>3]}d=d+1|0}while((d|0)<(l|0))}if((i|0)>=(x|0)){v=o;break e}}if((z|0)==63)Oa(16605,15693,408,29907)}else{i=0;g:while(1){d=k[t+(i<<2)>>2]|0;b=k[l+(i<<2)>>2]|0;j=b+d|0;if((b|0)>0){h=c+(i<<2)|0;if(n)do{e=k[s+(d<<2)>>2]|0;if((e|0)>=(i|0)){if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0)){z=63;break g}a=o+(e<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[q+(b<<2)>>2]=(i|0)<(e|0)?i:e;p[m+(b<<3)>>3]=+p[r+(d<<3)>>3]}d=d+1|0}while((d|0)<(j|0));else do{e=k[s+(d<<2)>>2]|0;if((e|0)>=(i|0)){g=k[h>>2]|0;f=k[c+(e<<2)>>2]|0;e=(f|0)<(g|0)?g:f;if(!((e|0)>-1?(k[y>>2]|0)>(e|0):0)){z=63;break g}a=o+(e<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[q+(b<<2)>>2]=(g|0)<(f|0)?g:f;p[m+(b<<3)>>3]=+p[r+(d<<3)>>3]}d=d+1|0}while((d|0)<(j|0))}i=i+1|0;if((i|0)>=(x|0)){v=o;break e}}if((z|0)==63)Oa(16605,15693,408,29907)}}else z=35}else z=35;while(0);if((z|0)==35)v=k[w>>2]|0;if(!v){u=A;return}Pq(k[v+-4>>2]|0);u=A;return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=u;u=u+48|0;f=g;d=k[b+8>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(17300,17319,208,17671);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=d;k[f+28>>2]=0;c=Oq((d<<2)+4|0)|0;k[f+12>>2]=c;if(!c){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[e>>2]=d;h=k[b+8>>2]|0;e=k[b+4>>2]|0;iF(c|0,0,(d<<2)+4|0)|0;if((h|0)!=(e|0))Oa(17434,17499,64,17589);Kh(b,f,k[a+72>>2]|0);Nh(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=u;u=u+48|0;f=g;d=k[b+8>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(17300,17319,208,17671);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=d;k[f+28>>2]=0;c=Oq((d<<2)+4|0)|0;k[f+12>>2]=c;if(!c){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[e>>2]=d;h=k[b+8>>2]|0;e=k[b+4>>2]|0;iF(c|0,0,(d<<2)+4|0)|0;if((h|0)!=(e|0))Oa(17434,17499,64,17589);Kh(b,f,k[a+72>>2]|0);Oh(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function Nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0,r=0,s=0,t=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;V=u;if(!(i[a+9>>0]|0))Oa(17681,17738,105,17834);T=k[b+8>>2]|0;if((T|0)!=(k[b+4>>2]|0))Oa(17855,17738,106,17834);N=a+60|0;if((k[N>>2]|0)!=(T|0))Oa(17876,17738,107,17834);P=a+68|0;if((k[P>>2]|0)!=(T|0))Oa(17903,17738,108,17834);Q=k[a+24>>2]|0;R=k[a+36>>2]|0;S=k[a+32>>2]|0;if(T>>>0>536870911){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}e=T<<3;if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}k[d+-4>>2]=c;if(!d){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}}else{d=u;u=u+((1*(e+15|0)|0)+15&-16)|0;d=d+15&-16}M=d;K=d;L=e>>>0>131072;c=T<<2;if(c>>>0>=131073){c=c+16|0;e=Oq(c)|0;f=e+16&-16;if(!e){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}k[f+-4>>2]=e;if(!f){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}c=Oq(c)|0;e=c+16&-16;if(!c){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}k[e+-4>>2]=c;if(!e){V=Kb(4)|0;cF(V);Cc(V|0,2032,79)}else I=1}else{I=c+15|0;f=u;u=u+((1*I|0)+15&-16)|0;e=u;u=u+((1*I|0)+15&-16)|0;f=f+15&-16;e=e+15&-16;I=0}J=e;C=e;D=a+48|0;Df(D,T);do if((T|0)>0){E=a+64|0;F=k[b+20>>2]|0;G=k[b+24>>2]|0;H=k[b+12>>2]|0;v=k[b+16>>2]|0;w=(v|0)==0;x=a+96|0;y=a+88|0;z=a+52|0;A=a+56|0;B=1;t=0;a:while(1){r=K+(t<<3)|0;p[r>>3]=0.0;k[C+(t<<2)>>2]=t;if((k[P>>2]|0)<=(t|0)){c=28;break}s=k[E>>2]|0;k[s+(t<<2)>>2]=0;c=k[H+(t<<2)>>2]|0;if(w)q=k[H+(t+1<<2)>>2]|0;else q=(k[v+(t<<2)>>2]|0)+c|0;if((c|0)<(q|0)){b=T;do{h=k[G+(c<<2)>>2]|0;if((h|0)<=(t|0)?(O=K+(h<<3)|0,p[O>>3]=+p[F+(c<<3)>>3]+ +p[O>>3],O=C+(h<<2)|0,(k[O>>2]|0)!=(t|0)):0){m=0;j=O;while(1){k[f+(m<<2)>>2]=h;k[j>>2]=t;if((h|0)<=-1){c=39;break a}if((k[N>>2]|0)<=(h|0)){c=39;break a}l=m+1|0;h=k[(k[A>>2]|0)+(h<<2)>>2]|0;j=C+(h<<2)|0;if((k[j>>2]|0)==(t|0))break;else m=l}if((m|0)>-1){h=l;do{m=h;h=h+-1|0;b=b+-1|0;k[f+(b<<2)>>2]=k[f+(h<<2)>>2]}while((m|0)>1)}}c=c+1|0}while((c|0)<(q|0));g=+p[r>>3]*+p[x>>3]+ +p[y>>3];p[r>>3]=0.0;if((b|0)<(T|0))do{j=k[f+(b<<2)>>2]|0;r=K+(j<<3)|0;n=+p[r>>3];p[r>>3]=0.0;if((j|0)<=-1){c=46;break a}if((k[z>>2]|0)<=(j|0)){c=46;break a}o=n/+p[(k[D>>2]|0)+(j<<3)>>3];c=k[Q+(j<<2)>>2]|0;if((k[P>>2]|0)<=(j|0)){c=48;break a}l=s+(j<<2)|0;r=k[l>>2]|0;h=r+c|0;if((r|0)>0)do{r=K+(k[R+(c<<2)>>2]<<3)|0;p[r>>3]=+p[r>>3]-n*+p[S+(c<<3)>>3];c=c+1|0}while((c|0)<(h|0));k[R+(c<<2)>>2]=t;p[S+(c<<3)>>3]=o;if((k[P>>2]|0)<=(j|0)){c=52;break a}g=g-n*o;k[l>>2]=(k[l>>2]|0)+1;b=b+1|0}while((b|0)<(T|0))}else{g=+p[x>>3]*0.0+ +p[y>>3];p[r>>3]=0.0}if((k[z>>2]|0)<=(t|0)){c=55;break}p[(k[D>>2]|0)+(t<<3)>>3]=g;b=g==0.0;t=t+1|0;if(b){c=57;break}if((t|0)>=(T|0)){c=57;break}else B=B&(b^1)}if((c|0)==28)Oa(16605,15693,408,29907);else if((c|0)==39)Oa(16605,15693,408,29907);else if((c|0)==46)Oa(16605,15693,408,29907);else if((c|0)==48)Oa(16605,15693,408,29907);else if((c|0)==52)Oa(16605,15693,408,29907);else if((c|0)==55)Oa(16605,15693,408,29907);else if((c|0)==57){U=b|B^1;break}}else U=0;while(0);k[a+4>>2]=U&1;i[a+8>>0]=1;if(I<<24>>24){if(e|0)Pq(k[J+-4>>2]|0);if(f|0)Pq(k[f+-4>>2]|0)}if((d|0)==0|L^1){u=V;return}Pq(k[M+-4>>2]|0);u=V;return}function Oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0.0,l=0,m=0,n=0.0,o=0,q=0,r=0,s=0,t=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;T=u;if(!(i[a+9>>0]|0))Oa(17681,17738,105,17834);R=k[b+8>>2]|0;if((R|0)!=(k[b+4>>2]|0))Oa(17855,17738,106,17834);K=a+60|0;if((k[K>>2]|0)!=(R|0))Oa(17876,17738,107,17834);M=a+68|0;if((k[M>>2]|0)!=(R|0))Oa(17903,17738,108,17834);N=k[a+24>>2]|0;O=k[a+36>>2]|0;P=k[a+32>>2]|0;if(R>>>0>536870911){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}e=R<<3;if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}k[d+-4>>2]=c;if(!d){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}}else{d=u;u=u+((1*(e+15|0)|0)+15&-16)|0;d=d+15&-16}J=d;H=d;I=e>>>0>131072;c=R<<2;if(c>>>0>=131073){c=c+16|0;e=Oq(c)|0;f=e+16&-16;if(!e){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}k[f+-4>>2]=e;if(!f){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}c=Oq(c)|0;e=c+16&-16;if(!c){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}k[e+-4>>2]=c;if(!e){T=Kb(4)|0;cF(T);Cc(T|0,2032,79)}else F=1}else{F=c+15|0;f=u;u=u+((1*F|0)+15&-16)|0;e=u;u=u+((1*F|0)+15&-16)|0;f=f+15&-16;e=e+15&-16;F=0}G=e;E=e;c=a+52|0;if(k[c>>2]|0){g=a+48|0;h=k[g>>2]|0;if(h|0)Pq(k[h+-4>>2]|0);k[g>>2]=0}k[c>>2]=0;a:do if((R|0)>0){A=a+64|0;B=k[b+20>>2]|0;C=k[b+24>>2]|0;D=k[b+12>>2]|0;v=k[b+16>>2]|0;w=(v|0)==0;x=a+96|0;y=a+88|0;z=a+56|0;t=0;b:while(1){q=H+(t<<3)|0;p[q>>3]=0.0;k[E+(t<<2)>>2]=t;if((k[M>>2]|0)<=(t|0)){c=31;break}r=k[A>>2]|0;s=r+(t<<2)|0;k[s>>2]=0;c=k[D+(t<<2)>>2]|0;if(w)o=k[D+(t+1<<2)>>2]|0;else o=(k[v+(t<<2)>>2]|0)+c|0;if((c|0)<(o|0)){g=R;do{h=k[C+(c<<2)>>2]|0;if((h|0)<=(t|0)?(L=H+(h<<3)|0,p[L>>3]=+p[B+(c<<3)>>3]+ +p[L>>3],L=E+(h<<2)|0,(k[L>>2]|0)!=(t|0)):0){m=0;b=L;while(1){k[f+(m<<2)>>2]=h;k[b>>2]=t;if((h|0)<=-1){c=42;break b}if((k[K>>2]|0)<=(h|0)){c=42;break b}l=m+1|0;h=k[(k[z>>2]|0)+(h<<2)>>2]|0;b=E+(h<<2)|0;if((k[b>>2]|0)==(t|0))break;else m=l}if((m|0)>-1){h=l;do{m=h;h=h+-1|0;g=g+-1|0;k[f+(g<<2)>>2]=k[f+(h<<2)>>2]}while((m|0)>1)}}c=c+1|0}while((c|0)<(o|0));j=+p[q>>3]*+p[x>>3]+ +p[y>>3];p[q>>3]=0.0;if((g|0)<(R|0))do{b=k[f+(g<<2)>>2]|0;c=H+(b<<3)|0;n=+p[c>>3];p[c>>3]=0.0;c=k[N+(b<<2)>>2]|0;n=n/+p[P+(c<<3)>>3];if((b|0)<=-1){c=49;break b}if((k[M>>2]|0)<=(b|0)){c=49;break b}l=r+(b<<2)|0;h=(k[l>>2]|0)+c|0;c=c+1|0;if((c|0)<(h|0)){do{q=H+(k[O+(c<<2)>>2]<<3)|0;p[q>>3]=+p[q>>3]-n*+p[P+(c<<3)>>3];c=c+1|0}while((c|0)!=(h|0));c=h}k[O+(c<<2)>>2]=t;p[P+(c<<3)>>3]=n;if((k[M>>2]|0)<=(b|0)){c=53;break b}j=j-n*n;k[l>>2]=(k[l>>2]|0)+1;g=g+1|0}while((g|0)<(R|0))}else{j=+p[x>>3]*0.0+ +p[y>>3];p[q>>3]=0.0}if((k[M>>2]|0)<=(t|0)){c=56;break}c=k[N+(t<<2)>>2]|0;r=k[s>>2]|0;k[s>>2]=r+1;c=r+c|0;k[O+(c<<2)>>2]=t;if(j<=0.0){S=1;break a}n=+Q(+j);p[P+(c<<3)>>3]=n;t=t+1|0;if((t|0)>=(R|0)){S=0;break a}}if((c|0)==31)Oa(16605,15693,408,29907);else if((c|0)==42)Oa(16605,15693,408,29907);else if((c|0)==49)Oa(16605,15693,408,29907);else if((c|0)==53)Oa(16605,15693,408,29907);else if((c|0)==56)Oa(16605,15693,408,29907)}else S=0;while(0);k[a+4>>2]=S;i[a+8>>0]=1;if(F<<24>>24){if(e|0)Pq(k[G+-4>>2]|0);if(f|0)Pq(k[f+-4>>2]|0)}if((d|0)==0|I^1){u=T;return}Pq(k[J+-4>>2]|0);u=T;return}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+16>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}mf(a,d,c);c=k[b>>2]|0;d=k[c+16>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Qh(h,i,a);return}mf(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Qh(h,i,a);return}function Qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+16|0;s=v;if(!(i[a+8>>0]|0))Oa(18167,17319,591,18314);t=a+12|0;n=a+20|0;j=k[n>>2]|0;if((j|0)!=(k[b+4>>2]|0))Oa(18326,17319,592,18314);if(k[a+4>>2]|0){u=v;return}g=a+72|0;r=a+76|0;f=k[r>>2]|0;if((f|0)<=0){h=k[b>>2]|0;g=k[b+8>>2]|0;f=c+4|0;if(!((k[f>>2]|0)==(j|0)?(k[c+8>>2]|0)==(g|0):0)){mf(c,j,g);if((k[f>>2]|0)!=(j|0))Oa(12160,12207,721,12285);if((k[c+8>>2]|0)!=(g|0))Oa(12160,12207,721,12285)}b=k[c>>2]|0;g=aa(g,j)|0;if((g|0)>0){f=0;do{p[b+(f<<3)>>3]=+p[h+(f<<3)>>3];f=f+1|0}while((f|0)!=(g|0))}}else{if((f|0)!=(j|0))Oa(14710,14850,97,14920);f=k[b+8>>2]|0;if(!((k[c+4>>2]|0)==(j|0)?(k[c+8>>2]|0)==(f|0):0))mf(c,j,f);Rh(c,g,b)}m=t+16|0;g=k[m>>2]|0;if(g){b=k[t+4>>2]|0;if(b|0){if((b|0)<=-1)Oa(14697,13988,163,14058);e=k[g>>2]|0;if((b|0)==1){l=1;o=27}else{f=1;do{e=(k[g+(f<<2)>>2]|0)+e|0;f=f+1|0}while((f|0)<(b|0));l=b;o=27}}}else{e=k[t+12>>2]|0;l=k[t+4>>2]|0;e=(k[e+(l<<2)>>2]|0)-(k[e>>2]|0)|0;o=27}do if((o|0)==27?(e|0)>0:0){e=(l|0)==(k[n>>2]|0);if(!(i[a+104>>0]|0)){if(!e)Oa(18358,18431,180,18516);if((l|0)==(k[c+4>>2]|0)){Th(t,c);break}else Oa(18358,18431,180,18516)}else{if(!e)Oa(18358,18431,180,18516);if((l|0)==(k[c+4>>2]|0)){Sh(t,c);break}else Oa(18358,18431,180,18516)}}while(0);g=k[a+52>>2]|0;if((g|0)>0){if((g|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);b=k[a+48>>2]|0;h=k[c>>2]|0;j=k[c+8>>2]|0;if((j|0)>0){e=0;do{l=aa(e,g)|0;f=0;do{n=h+(f+l<<3)|0;p[n>>3]=1.0/+p[b+(f<<3)>>3]*+p[n>>3];f=f+1|0}while((f|0)!=(g|0));e=e+1|0}while((e|0)!=(j|0))}}f=k[m>>2]|0;if(f){g=k[t+4>>2]|0;if(g|0){if((g|0)<=-1)Oa(14697,13988,163,14058);d=k[f>>2]|0;if((g|0)==1){q=1;o=51}else{e=1;do{d=(k[f+(e<<2)>>2]|0)+d|0;e=e+1|0}while((e|0)<(g|0));q=g;o=51}}}else{d=k[t+12>>2]|0;q=k[t+4>>2]|0;d=(k[d+(q<<2)>>2]|0)-(k[d>>2]|0)|0;o=51}do if((o|0)==51?(d|0)>0:0)if(!(i[a+104>>0]|0)){i[s>>0]=0;k[s+4>>2]=0;k[s+8>>2]=t;if((k[a+20>>2]|0)!=(q|0))Oa(18358,18431,180,18516);if((q|0)==(k[c+4>>2]|0)){Vh(s+4|0,c);break}else Oa(18358,18431,180,18516)}else{i[s>>0]=0;k[s+4>>2]=0;k[s+8>>2]=t;if((k[a+20>>2]|0)!=(q|0))Oa(18358,18431,180,18516);if((q|0)==(k[c+4>>2]|0)){Uh(s+4|0,c);break}else Oa(18358,18431,180,18516)}while(0);if((k[r>>2]|0)<=0){u=v;return}if((k[a+84>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);Rh(c,a+80|0,c);u=v;return}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;n=k[c+4>>2]|0;o=k[a>>2]|0;q=k[c>>2]|0;if((o|0)==(q|0)?(e=a+4|0,(k[e>>2]|0)==(n|0)):0){d=b+4|0;s=k[d>>2]|0;if((s|0)<=-1)Oa(13359,12702,312,12780);if(!s)return;c=Oq(s+16|0)|0;t=c+16&-16;if(!c){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}k[t+-4>>2]=c;if(!t){v=Kb(4)|0;cF(v);Cc(v|0,2032,79)}r=t;iF(r|0,0,s|0)|0;q=k[d>>2]|0;a:do if((q|0)>0){n=k[b>>2]|0;o=k[a>>2]|0;l=k[a+8>>2]|0;m=(l|0)>-1;h=k[e>>2]|0;j=(l|0)>0;c=0;b:while(1){c:do if((c|0)<(q|0)){d=(c|0)>-1;while(1){if(!(d&(s|0)>(c|0))){v=30;break b}if(!(i[r+c>>0]|0)){f=c;break c}c=c+1|0;if((c|0)>=(q|0)){f=c;break}}}else f=c;while(0);if((f|0)>=(q|0)){v=56;break a}c=f+1|0;i[r+f>>0]=1;u=k[n+(f<<2)>>2]|0;if((u|0)!=(f|0)){a=o+(f<<3)|0;d=(a|0)==0|m;g=(f|0)>-1&(h|0)>(f|0);if(m){if(d)d=u;else{v=42;break}do{e=o+(d<<3)|0;if(!((d|0)>-1&(h|0)>(d|0))){v=53;break b}if(!g){v=55;break b}if(j){b=0;do{w=aa(b,h)|0;y=e+(w<<3)|0;w=a+(w<<3)|0;x=+p[y>>3];p[y>>3]=+p[w>>3];p[w>>3]=x;b=b+1|0}while((b|0)!=(l|0))}i[r+d>>0]=1;d=k[n+(d<<2)>>2]|0}while((d|0)!=(f|0))}else{if(d)d=u;else{v=50;break}do{if(o+(d<<3)|0){v=51;break b}if(!((d|0)>-1&(h|0)>(d|0))){v=53;break b}if(!g){v=55;break b}if(j){v=48;break b}i[r+d>>0]=1;d=k[n+(d<<2)>>2]|0}while((d|0)!=(f|0))}}if((c|0)>=(q|0))break a}if((v|0)==30)Oa(16605,15693,408,29907);else if((v|0)==42)if((u|0)>-1&(h|0)>(u|0))Oa(13818,13988,175,14058);else Oa(13577,13744,122,13812);else if((v|0)==48)sb();else if((v|0)==50){if(o+(u<<3)|0)Oa(13818,13988,175,14058);if((u|0)>-1&(h|0)>(u|0))Oa(13818,13988,175,14058);else Oa(13577,13744,122,13812)}else if((v|0)==51)Oa(13818,13988,175,14058);else if((v|0)==53)Oa(13577,13744,122,13812);else if((v|0)==55)Oa(13577,13744,122,13812)}else v=56;while(0);if((v|0)==56?(t|0)==0:0)return;Pq(k[r+-4>>2]|0);return}if((n|0)<=0)return;f=k[c+8>>2]|0;l=k[b>>2]|0;j=k[a+8>>2]|0;g=(j|0)>-1;h=k[a+4>>2]|0;j=(j|0)==(f|0);b=(f|0)>0;if((f|0)>-1){d=0;while(1){e=q+(d<<3)|0;if((n|0)<=(d|0)){v=61;break}c=k[l+(d<<2)>>2]|0;a=o+(c<<3)|0;if(!((a|0)==0|g)){v=63;break}if(!((c|0)>-1&(h|0)>(c|0))){v=65;break}if(!j){v=67;break}if(b){c=0;do{y=a+((aa(c,h)|0)<<3)|0;w=e+((aa(c,n)|0)<<3)|0;p[y>>3]=+p[w>>3];c=c+1|0}while((c|0)!=(f|0))}d=d+1|0;if((d|0)>=(n|0)){v=69;break}}if((v|0)==61)Oa(13577,13744,122,13812);else if((v|0)==63)Oa(13818,13988,175,14058);else if((v|0)==65)Oa(13577,13744,122,13812);else if((v|0)==67)Oa(14445,14320,257,12780);else if((v|0)==69)return}if(g){c=0;while(1){if(q+(c<<3)|0){v=59;break}if((n|0)<=(c|0)){v=61;break}y=k[l+(c<<2)>>2]|0;if(!((y|0)>-1&(h|0)>(y|0))){v=65;break}if(!j){v=67;break}c=c+1|0;if((c|0)>=(n|0)){v=69;break}}if((v|0)==59)Oa(13818,13988,175,14058);else if((v|0)==61)Oa(13577,13744,122,13812);else if((v|0)==65)Oa(13577,13744,122,13812);else if((v|0)==67)Oa(14445,14320,257,12780);else if((v|0)==69)return}else m=0;while(1){if(q+(m<<3)|0){v=59;break}if((n|0)<=(m|0)){v=61;break}c=k[l+(m<<2)>>2]|0;if(o+(c<<3)|0){v=63;break}if(!((c|0)>-1&(h|0)>(c|0))){v=65;break}if(!j){v=67;break}m=m+1|0;if((m|0)>=(n|0)){v=69;break}}if((v|0)==59)Oa(13818,13988,175,14058);else if((v|0)==61)Oa(13577,13744,122,13812);else if((v|0)==63)Oa(13818,13988,175,14058);else if((v|0)==65)Oa(13577,13744,122,13812);else if((v|0)==67)Oa(14445,14320,257,12780);else if((v|0)==69)return}function Sh(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=k[b+8>>2]|0;if((r|0)<=0)return;s=k[a+4>>2]|0;u=(s|0)>0;v=k[b>>2]|0;m=k[b+4>>2]|0;n=k[a+20>>2]|0;o=k[a+24>>2]|0;q=k[a+12>>2]|0;i=k[a+16>>2]|0;j=(i|0)==0;h=0;do{a:do if(u){l=aa(m,h)|0;if(j)b=0;else{c=0;while(1){e=v+(l+c<<3)|0;d=+p[e>>3];if(d!=0.0){b=k[q+(c<<2)>>2]|0;g=k[i+(c<<2)>>2]|0;f=g+b|0;b:do if((g|0)>0){while(1){a=k[o+(b<<2)>>2]|0;if((a|0)>=(c|0))break;b=b+1|0;if((b|0)>=(f|0))break b}b=((a|0)==(c|0)&1)+b|0}while(0);if((b|0)<(f|0)?(w=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0,p[w>>3]=+p[w>>3]-d*+p[n+(b<<3)>>3],w=b+1|0,(w|0)!=(f|0)):0){b=w;do{g=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0;p[g>>3]=+p[g>>3]-+p[e>>3]*+p[n+(b<<3)>>3];b=b+1|0}while((b|0)!=(f|0))}}c=c+1|0;if((c|0)>=(s|0))break a}}do{e=v+(l+b<<3)|0;d=+p[e>>3];if(d!=0.0){a=k[q+(b<<2)>>2]|0;f=b+1|0;g=k[q+(f<<2)>>2]|0;c:do if((a|0)<(g|0)){while(1){c=k[o+(a<<2)>>2]|0;if((c|0)>=(b|0))break;a=a+1|0;if((a|0)>=(g|0)){b=a;break c}}b=((c|0)==(b|0)&1)+a|0}else b=a;while(0);if((b|0)<(g|0)?(t=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0,p[t>>3]=+p[t>>3]-d*+p[n+(b<<3)>>3],t=b+1|0,(t|0)!=(g|0)):0){b=t;do{c=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0;p[c>>3]=+p[c>>3]-+p[e>>3]*+p[n+(b<<3)>>3];b=b+1|0}while((b|0)!=(g|0));b=f}else b=f}else b=b+1|0}while((b|0)<(s|0))}while(0);h=h+1|0}while((h|0)<(r|0));return}function Th(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=k[b+8>>2]|0;if((r|0)<=0)return;t=k[a+4>>2]|0;u=(t|0)>0;v=k[b>>2]|0;m=k[b+4>>2]|0;n=k[a+20>>2]|0;o=k[a+24>>2]|0;q=k[a+12>>2]|0;i=k[a+16>>2]|0;j=(i|0)==0;h=0;a:while(1){b:do if(u){l=aa(m,h)|0;if(j)b=0;else{d=0;while(1){e=v+(l+d<<3)|0;c=+p[e>>3];if(c!=0.0){b=k[q+(d<<2)>>2]|0;g=k[i+(d<<2)>>2]|0;f=g+b|0;if((g|0)<=0){b=22;break a}while(1){a=k[o+(b<<2)>>2]|0;if((a|0)>=(d|0))break;b=b+1|0;if((b|0)>=(f|0)){b=22;break a}}if((a|0)!=(d|0)){b=22;break a}c=c/+p[n+(b<<3)>>3];p[e>>3]=c;a=b+1|0;if((a|0)<(f|0)?(w=v+(l+(k[o+(a<<2)>>2]|0)<<3)|0,p[w>>3]=+p[w>>3]-c*+p[n+(a<<3)>>3],w=b+2|0,(w|0)!=(f|0)):0){b=w;do{g=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0;p[g>>3]=+p[g>>3]-+p[e>>3]*+p[n+(b<<3)>>3];b=b+1|0}while((b|0)!=(f|0))}}d=d+1|0;if((d|0)>=(t|0))break b}}do{e=v+(l+b<<3)|0;c=+p[e>>3];if(c!=0.0){a=k[q+(b<<2)>>2]|0;f=b+1|0;g=k[q+(f<<2)>>2]|0;if((a|0)>=(g|0)){b=22;break a}while(1){d=k[o+(a<<2)>>2]|0;if((d|0)>=(b|0))break;a=a+1|0;if((a|0)>=(g|0)){b=22;break a}}if((d|0)!=(b|0)){b=22;break a}c=c/+p[n+(a<<3)>>3];p[e>>3]=c;b=a+1|0;if((b|0)<(g|0)?(s=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0,p[s>>3]=+p[s>>3]-c*+p[n+(b<<3)>>3],s=a+2|0,(s|0)!=(g|0)):0){b=s;do{d=v+(l+(k[o+(b<<2)>>2]|0)<<3)|0;p[d>>3]=+p[d>>3]-+p[e>>3]*+p[n+(b<<3)>>3];b=b+1|0}while((b|0)!=(g|0));b=f}else b=f}else b=b+1|0}while((b|0)<(t|0))}while(0);h=h+1|0;if((h|0)>=(r|0)){b=15;break}}if((b|0)==15)return;else if((b|0)==22)Oa(18529,18431,124,13144)}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+4|0;t=k[b+8>>2]|0;if((t|0)<=0)return;c=k[s>>2]|0;u=b+4|0;v=c+20|0;w=c+24|0;q=c+12|0;r=c+16|0;a=0;while(1){e=k[c+4>>2]|0;c=e+-1|0;a:do if((e|0)>0){j=k[b>>2]|0;l=aa(k[u>>2]|0,a)|0;m=k[v>>2]|0;n=k[w>>2]|0;o=k[q>>2]|0;i=k[r>>2]|0;if(i|0)while(1){h=j+(l+c<<3)|0;d=+p[h>>3];e=k[o+(c<<2)>>2]|0;f=k[i+(c<<2)>>2]|0;g=f+e|0;b:do if((f|0)>0){while(1){f=k[n+(e<<2)>>2]|0;if((f|0)>=(c|0))break;e=e+1|0;if((e|0)>=(g|0))break b}e=((f|0)==(c|0)&1)+e|0}while(0);if((e|0)<(g|0))do{d=d-+p[m+(e<<3)>>3]*+p[j+(l+(k[n+(e<<2)>>2]|0)<<3)>>3];e=e+1|0}while((e|0)!=(g|0));p[h>>3]=d;if((c|0)>0)c=c+-1|0;else break a}i=k[o+(e<<2)>>2]|0;while(1){h=j+(l+c<<3)|0;d=+p[h>>3];g=i;i=k[o+(c<<2)>>2]|0;c:do if((i|0)<(g|0)){e=i;while(1){f=k[n+(e<<2)>>2]|0;if((f|0)>=(c|0))break;e=e+1|0;if((e|0)>=(g|0))break c}e=((f|0)==(c|0)&1)+e|0}else e=i;while(0);if((e|0)<(g|0))do{d=d-+p[m+(e<<3)>>3]*+p[j+(l+(k[n+(e<<2)>>2]|0)<<3)>>3];e=e+1|0}while((e|0)!=(g|0));p[h>>3]=d;if((c|0)<=0)break;else c=c+-1|0}}while(0);a=a+1|0;if((a|0)>=(t|0))break;c=k[s>>2]|0}return}function Vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=a+4|0;u=k[b+8>>2]|0;if((u|0)<=0)return;c=k[t>>2]|0;v=b+4|0;w=c+20|0;x=c+24|0;r=c+12|0;s=c+16|0;a=0;a:while(1){d=k[c+4>>2]|0;c=d+-1|0;b:do if((d|0)>0){l=k[b>>2]|0;m=aa(k[v>>2]|0,a)|0;n=k[w>>2]|0;o=k[x>>2]|0;q=k[r>>2]|0;j=k[s>>2]|0;if(j|0)while(1){i=l+(m+c<<3)|0;e=+p[i>>3];d=k[q+(c<<2)>>2]|0;f=k[j+(c<<2)>>2]|0;h=f+d|0;if((f|0)<=0){a=20;break a}while(1){f=k[o+(d<<2)>>2]|0;if((f|0)>=(c|0))break;d=d+1|0;if((d|0)>=(h|0)){a=20;break a}}if((f|0)!=(c|0)){a=20;break a}g=+p[n+(d<<3)>>3];d=d+1|0;if((d|0)<(h|0))do{e=e-+p[n+(d<<3)>>3]*+p[l+(m+(k[o+(d<<2)>>2]|0)<<3)>>3];d=d+1|0}while((d|0)!=(h|0));p[i>>3]=e/g;if((c|0)>0)c=c+-1|0;else break b}j=k[q+(d<<2)>>2]|0;while(1){i=l+(m+c<<3)|0;e=+p[i>>3];h=j;j=k[q+(c<<2)>>2]|0;if((j|0)<(h|0))d=j;else{a=20;break a}while(1){f=k[o+(d<<2)>>2]|0;if((f|0)>=(c|0))break;d=d+1|0;if((d|0)>=(h|0)){a=20;break a}}if((f|0)!=(c|0)){a=20;break a}g=+p[n+(d<<3)>>3];d=d+1|0;if((d|0)<(h|0))do{e=e-+p[n+(d<<3)>>3]*+p[l+(m+(k[o+(d<<2)>>2]|0)<<3)>>3];d=d+1|0}while((d|0)!=(h|0));p[i>>3]=e/g;if((c|0)<=0)break;else c=c+-1|0}}while(0);a=a+1|0;if((a|0)>=(u|0)){a=3;break}c=k[t>>2]|0}if((a|0)==3)return;else if((a|0)==20)Oa(18529,18431,84,13144)}function Wh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=sf(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Xh(a){a=a|0;return 152}function Yh(a){a=a|0;if(!a)return;tg(a+8|0);EA(a);return}function Zh(a){a=a|0;var b=0;b=CA(320)|0;k[b>>2]=a;Bg(b+8|0);i[b+312>>0]=0;i[b+313>>0]=0;return b|0}function _h(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function $h(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+312|0;if(!(i[b>>0]|0)){i[b>>0]=0;c=a+313|0;i[c>>0]=0;e=(k[a>>2]|0)+664|0;Bh(e);d=a+8|0;ai(d,e);i[b>>0]=1;bi(d,e);if(!(i[d>>0]|0))Oa(17611,18907,204,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}b=a+313|0;if(i[b>>0]|0)return;d=(k[a>>2]|0)+664|0;Bh(d);e=a+8|0;bi(e,d);if(!(i[e>>0]|0))Oa(17611,18907,204,17666);if(k[a+12>>2]|0)return;i[b>>0]=1;return}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+48|0;y=z+32|0;x=z+24|0;w=z+16|0;v=z+8|0;t=z;p=a+24|0;Ag(p,b)|0;s=a+132|0;ci(z+40|0,p,s);r=a+136|0;if(k[r>>2]|0){m=a+40|0;if((k[m>>2]|0)==0?(d=k[a+28>>2]|0,e=Oq(d<<2)|0,k[m>>2]=e,(d|0)>0):0){f=k[a+36>>2]|0;c=0;do{l=c;c=c+1|0;k[e+(l<<2)>>2]=(k[f+(c<<2)>>2]|0)-(k[f+(l<<2)>>2]|0)}while((c|0)<(d|0))}l=b+4|0;j=k[l>>2]|0;if((j+1|0)>>>0>1073741823){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}e=b+16|0;c=k[e>>2]|0;if((c|0)==0?(g=k[b+12>>2]|0,(g|0)!=0):0){c=g;q=17}else{d=j<<2|1;do if(d>>>0>=131073){c=Oq(d+16|0)|0;d=c+16&-16;if(!c){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}k[d+-4>>2]=c;if(!d){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}else{c=k[e>>2]|0;break}}else{h=u;u=u+((1*(d+15|0)|0)+15&-16)|0;d=h+15&-16}while(0);if(c){f=(j<<2|1)>>>0>131072;e=k[a+36>>2]|0;if((j|0)>-1){c=0;while(1){k[d+(c<<2)>>2]=k[e+(c<<2)>>2];if((c|0)==(j|0))break;else c=c+1|0}h=d;b=d;c=k[l>>2]|0;q=20}else{n=f;o=d}}else{c=d;q=17}}if((q|0)==17){h=c;f=(j<<2|1)>>>0>131072;b=(k[b+12>>2]|0)==0?c:0;c=j;q=20}a:do if((q|0)==20)if((c|0)>0){d=a+36|0;c=0;while(1){e=h+(c<<2)|0;if((k[r>>2]|0)<=(c|0)){q=26;break}g=(k[s>>2]|0)+(c<<2)|0;k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]=k[e>>2];if((k[r>>2]|0)<=(c|0)){q=28;break}c=c+1|0;k[(k[m>>2]|0)+(k[g>>2]<<2)>>2]=(k[h+(c<<2)>>2]|0)-(k[e>>2]|0);if((c|0)>=(k[l>>2]|0)){n=f;o=b;break a}}if((q|0)==26)Oa(16605,15693,425,29764);else if((q|0)==28)Oa(16605,15693,425,29764)}else{n=f;o=b}while(0);if(!((o|0)==0|n^1))Pq(k[o+-4>>2]|0)}k[y>>2]=0;k[y+4>>2]=0;j=a+148|0;di(p,j,y,0)|0;if(!(i[a+248>>0]|0)){k[x>>2]=0;m=x+4|0;k[m>>2]=0;k[w>>2]=0;b=w+4|0;k[b>>2]=0;n=a+28|0;ei(k[n>>2]|0,j,x);n=k[n>>2]|0;Ef(w,n+1|0);l=(n|0)>0;h=a+152|0;b:do if(l){e=k[x>>2]|0;f=k[w>>2]|0;d=0;while(1){if((k[h>>2]|0)<=(d|0)){q=39;break}g=k[(k[j>>2]|0)+(d<<2)>>2]|0;if((g|0)<=-1){q=42;break}c=k[m>>2]|0;if((c|0)<=(g|0)){q=42;break}if((c|0)<=(d|0)){q=44;break}c=k[e+(d<<2)>>2]|0;if(!((c|0)>-1?(k[b>>2]|0)>(c|0):0)){q=46;break}k[f+(c<<2)>>2]=k[e+(g<<2)>>2];d=d+1|0;if((d|0)>=(n|0))break b}if((q|0)==39)Oa(16605,15693,425,29764);else if((q|0)==42)Oa(16605,15693,425,29764);else if((q|0)==44)Oa(16605,15693,425,29764);else if((q|0)==46)Oa(16605,15693,425,29764)}while(0);f=k[w>>2]|0;e=k[b>>2]|0;if((k[h>>2]|0)!=(e|0)?(Ng(j,e,1),(k[h>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);d=k[j>>2]|0;if((e|0)>0){c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)!=(e|0))}k[v>>2]=0;f=v+4|0;k[f>>2]=0;Ef(v,n);c:do if(l){d=k[x>>2]|0;e=k[v>>2]|0;c=0;while(1){if((k[m>>2]|0)<=(c|0)){q=51;break}if((k[f>>2]|0)<=(c|0)){q=53;break}k[e+(c<<2)>>2]=k[d+(c<<2)>>2];c=c+1|0;if((c|0)>=(n|0))break c}if((q|0)==51)Oa(16605,15693,425,29764);else if((q|0)==53)Oa(16605,15693,425,29764)}while(0);if(k[r>>2]|0){ji(t,0,v,s);e=k[t>>2]|0;f=k[t+4>>2]|0;if((k[r>>2]|0)!=(f|0)?(Ng(s,f,1),(k[r>>2]|0)!=(f|0)):0)Oa(12160,12207,721,12285);d=k[s>>2]|0;if((f|0)>0){c=0;do{k[d+(c<<2)>>2]=k[e+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[t>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}c=k[v>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[w>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[x>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}i[a+9>>0]=1;c=k[y>>2]|0;if(!c){u=z;return}Pq(k[c+-4>>2]|0);u=z;return}function bi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;oa=u;u=u+368|0;T=oa+344|0;na=oa+336|0;ma=oa+328|0;la=oa+320|0;ka=oa+312|0;ja=oa+304|0;ia=oa+296|0;ha=oa+288|0;ga=oa+280|0;fa=oa+272|0;ea=oa+264|0;da=oa+256|0;ca=oa+248|0;O=oa+244|0;P=oa+240|0;Q=oa+236|0;R=oa+224|0;S=oa+72|0;U=oa+60|0;V=oa+48|0;W=oa+36|0;X=oa+24|0;Y=oa+12|0;Z=oa+88|0;_=oa;if(!(i[a+9>>0]|0))Oa(18847,18907,499,17671);p=b+4|0;if((k[b+8>>2]|0)!=(k[p>>2]|0))Oa(18982,18907,500,17671);i[a>>0]=1;$=a+24|0;Ag($,b)|0;ba=a+132|0;q=a+136|0;g=k[q>>2]|0;a:do if(!g){Ef(ba,k[p>>2]|0);if((k[p>>2]|0)>0){c=0;while(1){if((k[q>>2]|0)<=(c|0))break;k[(k[ba>>2]|0)+(c<<2)>>2]=c;c=c+1|0;if((c|0)>=(k[p>>2]|0))break a}Oa(16605,15693,425,29764)}}else{d=a+40|0;c=k[d>>2]|0;if(!c){f=k[a+28>>2]|0;c=Oq(f<<2)|0;k[d>>2]=c;if((f|0)>0){e=k[a+36>>2]|0;d=0;do{M=d;d=d+1|0;k[c+(M<<2)>>2]=(k[e+(d<<2)>>2]|0)-(k[e+(M<<2)>>2]|0)}while((d|0)<(f|0))}}m=(k[b+16>>2]|0)==0;if(!m){b=k[p>>2]|0;f=b+1|0;f=DA(f>>>0>1073741823?-1:f<<2)|0;if((b|0)<0){n=f;o=f}else{e=k[a+36>>2]|0;d=0;while(1){k[f+(d<<2)>>2]=k[e+(d<<2)>>2];if((d|0)<(b|0))d=d+1|0;else{l=f;j=f;d=b;N=15;break}}}}else{j=k[b+12>>2]|0;l=j;d=k[p>>2]|0;N=15}b:do if((N|0)==15)if((d|0)>0){if((g|0)<=0)Oa(16605,15693,425,29764);e=k[a+36>>2]|0;f=k[ba>>2]|0;d=0;b=l;while(1){g=f+(d<<2)|0;k[e+(k[g>>2]<<2)>>2]=k[b>>2];h=d+1|0;if((k[q>>2]|0)<=(d|0)){N=21;break}k[c+(k[g>>2]<<2)>>2]=(k[l+(h<<2)>>2]|0)-(k[b>>2]|0);if((h|0)>=(k[p>>2]|0)){n=l;o=j;break b}if((k[q>>2]|0)>(h|0)){d=h;b=l+(h<<2)|0}else{N=19;break}}if((N|0)==19)Oa(16605,15693,425,29764);else if((N|0)==21)Oa(16605,15693,425,29764)}else{n=l;o=j}while(0);if(!((n|0)==0|m))FA(o)}while(0);L=k[a+32>>2]|0;M=k[a+28>>2]|0;e=k[$+16>>2]|0;if(e)if(M){if((M|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((M|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(M|0))}}else c=0;else{c=k[$+12>>2]|0;c=(k[c+(M<<2)>>2]|0)-(k[c>>2]|0)|0}J=a+252|0;I=k[J>>2]|0;d=aa(I,L)|0;K=a+156|0;if(ki(a,L,M,c,0,k[a+272>>2]|0,I,K)|0){TA(a+12|0,19046)|0;i[a+8>>0]=0;u=oa;return}k[na>>2]=0;I=na+4|0;k[I>>2]=0;Ef(na,L);c=k[I>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[na>>2]|0,0,c<<2|0)|0;k[ma>>2]=0;c=ma+4|0;k[c>>2]=0;Ef(ma,L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ma>>2]|0,0,c<<2|0)|0;k[la>>2]=0;c=la+4|0;k[c>>2]=0;Ef(la,L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[la>>2]|0,0,c<<2|0)|0;k[ka>>2]=0;G=ka+4|0;k[G>>2]=0;Ef(ka,d);k[ja>>2]=0;H=ja+4|0;k[H>>2]=0;Ef(ja,d);k[ia>>2]=0;c=ia+4|0;k[c>>2]=0;Ef(ia,M);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ia>>2]|0,0,c<<2|0)|0;k[ha>>2]=0;b=ha+4|0;k[b>>2]=0;Ef(ha,L*3|0);c=k[b>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ha>>2]|0,0,c<<2|0)|0;c=k[G>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ka>>2]|0,-1,c<<2|0)|0;c=k[H>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ja>>2]|0,-1,c<<2|0)|0;k[ga>>2]=0;F=ga+4|0;k[F>>2]=0;Df(ga,d);c=k[F>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ga>>2]|0,0,c<<3|0)|0;k[fa>>2]=0;c=fa+4|0;k[c>>2]=0;E=a+260|0;D=aa((k[E>>2]|0)+L|0,k[J>>2]|0)|0;Df(fa,(L|0)<(D|0)?D:L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[fa>>2]|0,0,c<<3|0)|0;D=k[q>>2]|0;k[ea>>2]=0;e=ea+4|0;k[e>>2]=0;Ef(ea,D);e=k[e>>2]|0;if((e|0)>0){d=k[ea>>2]|0;f=k[ba>>2]|0;c=0;do{k[d+(k[f+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0))}k[da>>2]=0;D=da+4|0;k[D>>2]=0;Ef(da,M);c=a+148|0;d=k[a+256>>2]|0;if(!(i[a+248>>0]|0))mi(a,M,c,d,ha,da);else li(a,M,c,d,ha,da);C=a+140|0;Ef(C,L);c=k[a+144>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[C>>2]|0,-1,c<<2|0)|0;c=k[b>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ha>>2]|0,-1,c<<2|0)|0;w=a+296|0;k[w>>2]=1;A=a+168|0;if((k[A>>2]|0)<=0)Oa(16605,15693,425,29764);B=a+164|0;k[k[B>>2]>>2]=-1;d=a+160|0;c=k[d>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[K>>2]|0,0,c<<2|0)|0;x=a+188|0;if((k[a+192>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[x>>2]>>2]=0;y=a+228|0;if((k[a+232>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[y>>2]>>2]=0;z=a+196|0;if((k[a+200>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[z>>2]>>2]=0;if((k[d>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[K>>2]>>2]=0;k[ca>>2]=0;k[ca+4>>2]=0;Ef(ca,M);c:do if((M|0)>0){l=(L|0)>-1;m=R+4|0;n=S+4|0;o=U+4|0;p=V+4|0;q=W+4|0;r=X+4|0;s=Y+4|0;t=a+280|0;v=_+4|0;j=0;d:while(1){c=k[J>>2]|0;d=c+j|0;d=(M|0)<(d|0)?M:d;e=k[D>>2]|0;f=k[da>>2]|0;b=(j|0)>-2;g=j;while(1){g=g+1|0;if((g|0)>=(d|0))break;if(!(b&(e|0)>(g|0))){N=109;break d}if((k[f+(g<<2)>>2]|0)!=-1){N=111;break}}if((N|0)==111){N=0;c=g-j|0}h=(g|0)==(M|0)?M-j|0:c;ni(a,L,h,j,$,C,P,ga,ja,na,ka,ia,ha,ma,la,K);oi(a,L,h,j,k[P>>2]|0,ga,fa,na,ka,K);g=j;j=h+j|0;if((h|0)>0){b=g;do{d=aa(b-g|0,L)|0;k[Q>>2]=k[P>>2];c=(k[ja>>2]|0)+(d<<2)|0;if(!(l|(c|0)==0)){N=114;break d}if((d|L|0)<0?1:((k[H>>2]|0)-L|0)<(d|0)){N=116;break d}h=(k[ka>>2]|0)+(d<<2)|0;if(!(l|(h|0)==0)){N=118;break d}if(((k[G>>2]|0)-L|0)<(d|0)){N=120;break d}f=k[E>>2]|0;k[R>>2]=c;k[m>>2]=L;k[S>>2]=h;k[n>>2]=L;if(pi(a,L,b,C,f,Q,R,na,S,ia,ha,ma,la,K)|0){N=122;break d}f=(k[ga>>2]|0)+(d<<3)|0;if(!(l|(f|0)==0)){N=124;break d}if(((k[F>>2]|0)-L|0)<(d|0)){N=126;break d}c=k[P>>2]|0;d=L-c|0;e=(k[na>>2]|0)+(c<<2)|0;if(!((d|0)>-1|(e|0)==0)){N=128;break d}if((d|c|0)<0?1:((k[I>>2]|0)-d|0)<(c|0)){N=130;break d}c=(k[Q>>2]|0)-c|0;k[U>>2]=f;k[o>>2]=L;k[V>>2]=e;k[p>>2]=d;k[W>>2]=h;k[q>>2]=L;if(qi(a,b,c,U,fa,V,W,g,K)|0){N=132;break d}e=k[Q>>2]|0;k[X>>2]=h;k[r>>2]=L;k[Y>>2]=f;k[s>>2]=L;if(ri(a,b,e,na,X,C,Y,K)|0){N=134;break d}c=si(a,b,t,C,ea,O,K)|0;if(c|0){N=136;break d}c=k[O>>2]|0;if((c|0)!=(b|0))k[w>>2]=0-(k[w>>2]|0);f=k[Q>>2]|0;k[_>>2]=h;k[v>>2]=L;ui(a,b,C,c,f,na,_,ia,K);if((k[Q>>2]|0)>0){d=k[na>>2]|0;c=0;do{if((k[I>>2]|0)<=(c|0)){N=142;break d}e=k[d+(c<<2)>>2]|0;if(!((e|0)>-1&(L|0)>(e|0))){N=144;break d}k[h+(e<<2)>>2]=-1;c=c+1|0}while((c|0)<(k[Q>>2]|0))}b=b+1|0}while((b|0)<(j|0))}if((M|0)<=(j|0)){N=147;break c}}switch(N|0){case 109:{Oa(16605,15693,425,29764);break}case 114:{Oa(13818,13988,175,14058);break}case 116:{Oa(14177,13744,147,13812);break}case 118:{Oa(13818,13988,175,14058);break}case 120:{Oa(14177,13744,147,13812);break}case 122:{TA(a+12|0,19082)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 124:{Oa(13818,13988,175,14058);break}case 126:{Oa(14177,13744,147,13812);break}case 128:{Oa(13818,13988,175,14058);break}case 130:{Oa(14177,13744,147,13812);break}case 132:{TA(a+12|0,19123)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 134:{TA(a+12|0,19165)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 136:{W=a+12|0;TA(W,19208)|0;ba=Z+56|0;$=Z+4|0;k[Z>>2]=244;k[ba>>2]=264;Dr(Z+56|0,$);k[Z+128>>2]=0;k[Z+132>>2]=-1;k[Z>>2]=2804;k[ba>>2]=2824;Hr($);k[$>>2]=2856;_=Z+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[Z+52>>2]=16;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;Yi($,T);NA(T);Lr(Z,c)|0;ej(T,$);Y=i[T+11>>0]|0;X=Y<<24>>24<0;XA(W,X?k[T>>2]|0:T,X?k[T+4>>2]|0:Y&255)|0;NA(T);k[a+4>>2]=1;i[a+8>>0]=0;k[Z>>2]=2804;k[ba>>2]=2824;k[$>>2]=2856;NA(_);br($);Ar(Z,2836);Zq(ba);break c}case 142:{Oa(16605,15693,425,29764);break}case 144:{Oa(16605,15693,425,29764);break}}}else N=147;while(0);do if((N|0)==147){c=vi(C)|0;k[w>>2]=c;c=vi(ba)|0;k[a+300>>2]=c;c=a+292|0;wi(a,M,a+288|0,c,K);xi(a,M,C,K);k[a+60>>2]=L;k[a+64>>2]=M;k[a+72>>2]=k[a+172>>2];k[a+76>>2]=k[x>>2];k[a+80>>2]=k[a+180>>2];k[a+84>>2]=k[z>>2];if((M|0)<=-1)Oa(16605,15693,425,29764);if((k[A>>2]|0)>(M|0)){Z=k[B>>2]|0;k[a+68>>2]=k[Z+(M<<2)>>2];k[a+88>>2]=Z;k[a+92>>2]=k[K>>2];Z=k[c>>2]|0;_=k[y>>2]|0;$=k[a+220>>2]|0;ba=k[a+212>>2]|0;i[a+96>>0]=0;k[a+100>>2]=M;k[a+104>>2]=L;k[a+108>>2]=0;k[a+112>>2]=Z;k[a+116>>2]=_;k[a+120>>2]=$;k[a+124>>2]=ba;k[a+128>>2]=0;k[a+4>>2]=0;i[a+8>>0]=1;break}else Oa(16605,15693,425,29764)}while(0);c=k[ca>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[da>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ea>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[fa>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ga>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ha>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ia>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ja>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ka>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[la>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ma>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[na>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);u=oa;return}function ci(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;s=u;u=u+256|0;i=s;l=s+176|0;r=s+168|0;q=s+160|0;if(k[b+16>>2]|0)Oa(18558,18701,130,29764);g=k[b+8>>2]|0;n=k[b+4>>2]|0;h=k[b+12>>2]|0;h=(k[h+(n<<2)>>2]|0)-(k[h>>2]|0)|0;if((n|g|h|0)<0)f=-1;else f=(((g<<4)+16|0)>>>2)+n+(((n*24|0)+24|0)>>>2)+(h<<1)+((h|0)/5|0)|0;iF(i+16|0,0,144)|0;p[i>>3]=.5;p[i+8>>3]=.5;k[r>>2]=0;o=r+4|0;k[o>>2]=0;Ef(r,n+1|0);k[q>>2]=0;j=q+4|0;k[j>>2]=0;Ef(q,f);a:do if((n|0)>=0){d=k[b+12>>2]|0;e=k[r>>2]|0;a=0;while(1){if((k[o>>2]|0)<=(a|0))break;k[e+(a<<2)>>2]=k[d+(a<<2)>>2];if((a|0)<(n|0))a=a+1|0;else break a}Oa(16605,15693,425,29764)}while(0);b:do if((h|0)>0){d=k[b+24>>2]|0;e=k[q>>2]|0;a=0;while(1){if((k[j>>2]|0)<=(a|0))break;k[e+(a<<2)>>2]=k[d+(a<<2)>>2];a=a+1|0;if((a|0)>=(h|0)){m=e;break b}}Oa(16605,15693,425,29764)}else m=k[q>>2]|0;while(0);if(!(fi(g,n,f,m,k[r>>2]|0,i,l)|0))Oa(18783,18701,148,29764);Ef(c,n);c:do if((n|0)>0){b=k[r>>2]|0;f=c+4|0;d=k[c>>2]|0;a=0;while(1){if((k[o>>2]|0)<=(a|0)){a=26;break}e=k[b+(a<<2)>>2]|0;if(!((e|0)>-1?(k[f>>2]|0)>(e|0):0)){a=28;break}k[d+(e<<2)>>2]=a;a=a+1|0;if((a|0)>=(n|0))break c}if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==28)Oa(16605,15693,425,29764)}while(0);a=k[q>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[r>>2]|0;if(!a){u=s;return}Pq(k[a+-4>>2]|0);u=s;return}function di(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+64|0;z=A+48|0;y=A+40|0;i=A+8|0;j=A+4|0;l=A;f=a+4|0;v=k[f>>2]|0;w=k[a+8>>2]|0;h=(w|0)<(v|0)?w:v;k[z>>2]=0;x=z+4|0;k[x>>2]=0;Ef(z,v);e=k[x>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);if(e|0)iF(k[z>>2]|0,0,e<<2|0)|0;k[y>>2]=0;t=y+4|0;k[t>>2]=0;Ef(y,v);e=k[t>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);if(e|0)iF(k[y>>2]|0,0,e<<2|0)|0;Ef(b,k[f>>2]|0);Ef(c,w);s=c+4|0;g=k[s>>2]|0;if((g|0)<=-1)Oa(11919,12068,74,12145);e=k[c>>2]|0;if(g){f=0;do{k[e+(f<<2)>>2]=v;f=f+1|0}while((f|0)!=(g|0));e=k[c>>2]|0}k[i>>2]=e;k[i+4>>2]=h;if(!((h|0)>-1|(e|0)==0))Oa(13818,13988,175,14058);k[i+12>>2]=c;k[i+16>>2]=0;r=k[s>>2]|0;k[i+24>>2]=r;if((h|0)<0|(r|0)<(h|0))Oa(14177,13744,147,13812);k[j>>2]=0;k[l>>2]=h+-1;gi(i,h,j,l)|0;m=(v|0)>0;a:do if(m){i=k[a+24>>2]|0;j=k[a+12>>2]|0;l=k[a+16>>2]|0;n=(l|0)==0;b:do if(!d){g=0;c:while(1){e=k[j+(g<<2)>>2]|0;if(n)h=k[j+(g+1<<2)>>2]|0;else h=(k[l+(g<<2)>>2]|0)+e|0;if((e|0)<(h|0))do{f=k[i+(e<<2)>>2]|0;if(!((f|0)>-1?(k[s>>2]|0)>(f|0):0))break c;r=(k[c>>2]|0)+(f<<2)|0;q=k[r>>2]|0;k[r>>2]=(g|0)<(q|0)?g:q;e=e+1|0}while((e|0)<(h|0));g=g+1|0;if((g|0)>=(v|0))break b}Oa(16605,15693,425,29764)}else{h=0;d:while(1){e=k[d+(h<<2)>>2]|0;f=k[j+(e<<2)>>2]|0;if(n)g=k[j+(e+1<<2)>>2]|0;else g=(k[l+(e<<2)>>2]|0)+f|0;if((f|0)<(g|0)){e=f;do{f=k[i+(e<<2)>>2]|0;if(!((f|0)>-1?(k[s>>2]|0)>(f|0):0))break d;r=(k[c>>2]|0)+(f<<2)|0;q=k[r>>2]|0;k[r>>2]=(h|0)<(q|0)?h:q;e=e+1|0}while((e|0)<(g|0))}h=h+1|0;if((h|0)>=(v|0))break b}Oa(16605,15693,425,29764)}while(0);if(m){o=b+4|0;p=(d|0)==0;q=a+24|0;r=a+12|0;a=a+16|0;m=0;e:while(1){h=(m|0)>=(w|0);if((k[t>>2]|0)<=(m|0)){e=43;break}k[(k[y>>2]|0)+(m<<2)>>2]=m;if((k[x>>2]|0)<=(m|0)){e=45;break}k[(k[z>>2]|0)+(m<<2)>>2]=m;if((k[o>>2]|0)<=(m|0)){e=47;break}k[(k[b>>2]|0)+(m<<2)>>2]=v;if(p)e=m;else e=k[d+(m<<2)>>2]|0;n=k[q>>2]|0;f=k[r>>2]|0;i=k[f+(e<<2)>>2]|0;g=k[a>>2]|0;if(!g)l=k[f+(e+1<<2)>>2]|0;else l=(k[g+(e<<2)>>2]|0)+i|0;f=(i|0)<(l|0);if(f|h^1){j=m;while(1){if(f)e=k[n+(i<<2)>>2]|0;else e=m;h=h|(e|0)==(m|0);if(!((e|0)>-1?(k[s>>2]|0)>(e|0):0)){e=58;break e}e=k[(k[c>>2]|0)+(e<<2)>>2]|0;do if((e|0)<(m|0)){e=hi(e,y)|0;if(!((e|0)>-1?(k[x>>2]|0)>(e|0):0)){e=61;break e}f=(k[z>>2]|0)+(e<<2)|0;g=k[f>>2]|0;if((g|0)==(m|0)){e=j;break}if(!((g|0)>-1?(k[o>>2]|0)>(g|0):0)){e=64;break e}k[(k[b>>2]|0)+(g<<2)>>2]=m;if(!((j|0)>-1?(k[t>>2]|0)>(j|0):0)){e=66;break e}k[(k[y>>2]|0)+(j<<2)>>2]=e;if((k[x>>2]|0)<=(e|0)){e=68;break e}k[f>>2]=m}else e=j;while(0);i=i+1|0;f=(i|0)<(l|0);if(!(f|h^1))break;else j=e}}m=m+1|0;if((m|0)>=(v|0))break a}if((e|0)==43)Oa(16605,15693,425,29764);else if((e|0)==45)Oa(16605,15693,425,29764);else if((e|0)==47)Oa(16605,15693,425,29764);else if((e|0)==58)Oa(16605,15693,425,29764);else if((e|0)==61)Oa(16605,15693,425,29764);else if((e|0)==64)Oa(16605,15693,425,29764);else if((e|0)==66)Oa(16605,15693,425,29764);else if((e|0)==68)Oa(16605,15693,425,29764)}}while(0);e=k[y>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);e=k[z>>2]|0;if(!e){u=A;return 0}Pq(k[e+-4>>2]|0);u=A;return 0}function ei(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+16|0;p=q+8|0;o=q;k[p>>2]=0;m=p+4|0;k[m>>2]=0;k[o>>2]=0;n=o+4|0;k[n>>2]=0;d=a+1|0;Ef(p,d);Ef(o,d);e=k[n>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);if(e|0)iF(k[o>>2]|0,0,e<<2|0)|0;Ef(c,d);d=k[c+4>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[c>>2]|0,0,d<<2|0)|0;d=k[m>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[p>>2]|0,-1,d<<2|0)|0;a:do if((a|0)>0){f=b+4|0;g=k[b>>2]|0;h=k[p>>2]|0;i=k[o>>2]|0;d=a;while(1){e=d;d=d+-1|0;if((k[f>>2]|0)<(e|0)){d=17;break}j=k[g+(d<<2)>>2]|0;if(!((j|0)>-1?(k[m>>2]|0)>(j|0):0)){d=19;break}if((k[n>>2]|0)<(e|0)){d=21;break}l=h+(j<<2)|0;k[i+(d<<2)>>2]=k[l>>2];if((k[m>>2]|0)<=(j|0)){d=23;break}k[l>>2]=d;if((e|0)<=1)break a}if((d|0)==17)Oa(16605,15693,425,29764);else if((d|0)==19)Oa(16605,15693,425,29764);else if((d|0)==21)Oa(16605,15693,425,29764);else if((d|0)==23)Oa(16605,15693,425,29764)}while(0);ii(a,b,p,o,c,0);d=k[o>>2]|0;if(d|0)Pq(k[d+-4>>2]|0);d=k[p>>2]|0;if(!d){u=q;return}Pq(k[d+-4>>2]|0);u=q;return}function fi(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;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;W=u;u=u+160|0;j=W;if(!g){g=0;u=W;return g|0}w=g+12|0;v=g+16|0;h=g;i=h+80|0;do{k[h>>2]=0;h=h+4|0}while((h|0)<(i|0));k[v>>2]=-1;s=g+20|0;k[s>>2]=-1;if(!d){k[w>>2]=-1;g=0;u=W;return g|0}if(!e){k[w>>2]=-2;g=0;u=W;return g|0}if((a|0)<0){k[w>>2]=-3;k[v>>2]=a;g=0;u=W;return g|0}if((b|0)<0){k[w>>2]=-4;k[v>>2]=b;g=0;u=W;return g|0}r=e+(b<<2)|0;h=k[r>>2]|0;if((h|0)<0){k[w>>2]=-5;k[v>>2]=h;g=0;u=W;return g|0}if(k[e>>2]|0){k[w>>2]=-6;k[v>>2]=k[e>>2];g=0;u=W;return g|0}if(!f){iF(j+16|0,0,144)|0;p[j>>3]=.5;p[j+8>>3]=.5}else j=f;i=((b*24|0)+24|0)>>>2;f=((a<<4)+16|0)>>>2;y=h<<1;h=f+b+i+y|0;if((h|0)>(c|0)){k[w>>2]=-7;k[v>>2]=h;k[s>>2]=c;g=0;u=W;return g|0}T=c-f|0;S=T-i|0;V=d+(S<<2)|0;T=d+(T<<2)|0;U=(b|0)>0;a:do if(U){k[V>>2]=0;f=e+4|0;R=(k[f>>2]|0)-(k[e>>2]|0)|0;h=V+4|0;k[h>>2]=R;if((R|0)<0)i=0;else{h=0;i=1;while(1){k[V+(h*24|0)+8>>2]=1;k[V+(h*24|0)+12>>2]=0;k[V+(h*24|0)+16>>2]=-1;k[V+(h*24|0)+20>>2]=-1;if((i|0)>=(b|0))break a;k[V+(i*24|0)>>2]=k[f>>2];c=i+1|0;f=e+(c<<2)|0;R=(k[f>>2]|0)-(k[e+(i<<2)>>2]|0)|0;h=V+(i*24|0)+4|0;k[h>>2]=R;if((R|0)<0)break;else{h=i;i=c}}}k[w>>2]=-8;k[v>>2]=i;k[s>>2]=k[h>>2];g=0;u=W;return g|0}while(0);q=g+24|0;k[q>>2]=0;R=(a|0)>0;if(R){h=0;do{k[T+(h<<4)+4>>2]=0;k[T+(h<<4)+12>>2]=-1;h=h+1|0}while((h|0)!=(a|0))}b:do if(U){l=0;c:while(1){h=k[e+(l<<2)>>2]|0;m=l+1|0;Q=k[e+(m<<2)>>2]|0;n=d+(Q<<2)|0;if((h|0)<(Q|0)){o=V+(l*24|0)+4|0;i=d+(h<<2)|0;f=-1;do{Q=i;i=i+4|0;h=f;f=k[Q>>2]|0;if(!((f|0)>-1&(f|0)<(a|0)))break c;c=T+(f<<4)+12|0;if((f|0)>(h|0)?(t=k[c>>2]|0,(t|0)!=(l|0)):0)h=t;else{k[w>>2]=1;k[v>>2]=l;k[s>>2]=f;k[q>>2]=(k[q>>2]|0)+1;h=k[c>>2]|0}P=(h|0)==(l|0);Q=P?o:T+(f<<4)+4|0;k[Q>>2]=(P?-1:1)+(k[Q>>2]|0);k[c>>2]=l}while(i>>>0>>0)}if((m|0)<(b|0))l=m;else break b}k[w>>2]=-9;k[v>>2]=l;k[s>>2]=f;k[q>>2]=a;g=0;u=W;return g|0}while(0);h=k[r>>2]|0;k[T>>2]=h;k[T+8>>2]=h;k[T+12>>2]=-1;if((a|0)>1){i=1;do{h=(k[T+(i+-1<<4)+4>>2]|0)+h|0;k[T+(i<<4)>>2]=h;k[T+(i<<4)+8>>2]=h;k[T+(i<<4)+12>>2]=-1;i=i+1|0}while((i|0)!=(a|0))}if((k[w>>2]|0)==1){if(U){c=0;do{h=k[e+(c<<2)>>2]|0;l=c;c=c+1|0;Q=k[e+(c<<2)>>2]|0;m=d+(Q<<2)|0;if((h|0)<(Q|0)){h=d+(h<<2)|0;do{i=k[h>>2]|0;h=h+4|0;f=T+(i<<4)+12|0;if((k[f>>2]|0)!=(l|0)){P=T+(i<<4)+8|0;Q=k[P>>2]|0;k[P>>2]=Q+1;k[d+(Q<<2)>>2]=l;k[f>>2]=l}}while(h>>>0>>0)}}while((c|0)!=(b|0))}}else if(U){i=0;do{h=k[e+(i<<2)>>2]|0;f=i;i=i+1|0;Q=k[e+(i<<2)>>2]|0;c=d+(Q<<2)|0;if((h|0)<(Q|0)){h=d+(h<<2)|0;do{P=T+(k[h>>2]<<4)+8|0;h=h+4|0;Q=k[P>>2]|0;k[P>>2]=Q+1;k[d+(Q<<2)>>2]=f}while(h>>>0>>0)}}while((i|0)!=(b|0))}if(R){h=0;do{k[T+(h<<4)+12>>2]=0;k[T+(h<<4)+8>>2]=k[T+(h<<4)+4>>2];h=h+1|0}while((h|0)!=(a|0))}if((k[w>>2]|0)==1){k[V>>2]=0;k[e>>2]=0;if((b|0)>1){h=1;do{Q=h+-1|0;Q=(k[V+(Q*24|0)+4>>2]|0)+(k[V+(Q*24|0)>>2]|0)|0;k[V+(h*24|0)>>2]=Q;k[e+(h<<2)>>2]=Q;h=h+1|0}while((h|0)!=(b|0))}if(R){i=0;do{h=d+(k[T+(i<<4)>>2]<<2)|0;Q=k[T+(i<<4)+4>>2]|0;f=h+(Q<<2)|0;if((Q|0)>0)do{P=e+(k[h>>2]<<2)|0;h=h+4|0;Q=k[P>>2]|0;k[P>>2]=Q+1;k[d+(Q<<2)>>2]=i}while(h>>>0>>0);i=i+1|0}while((i|0)!=(a|0))}}i=~~(+(b|0)*+p[j>>3]);i=(i|0)>(b|0)?b:i;f=~~(+(a|0)*+p[j+8>>3]);f=(f|0)>(a|0)?a:f;h=b;j=b;d:while(1){do{Q=h;h=h+-1|0;if((Q|0)<=0)break d}while((k[V+(h*24|0)+4>>2]|0)!=0);Q=j+-1|0;k[V+(h*24|0)+12>>2]=Q;k[V+(h*24|0)>>2]=-1;j=Q}n=(i|0)>0?i:0;m=(f|0)>0?f:0;e:do if(U){h=b;while(1){c=h;while(1){h=c+-1|0;l=V+(h*24|0)|0;i=k[l>>2]|0;if((i|0)>=0?(x=k[V+(h*24|0)+4>>2]|0,(x|0)>(m|0)):0)break;if((c|0)>1)c=h;else{c=j;break e}}j=j+-1|0;k[V+(h*24|0)+12>>2]=j;i=d+(i<<2)|0;f=i+(x<<2)|0;if((x|0)>0)do{Q=T+(k[i>>2]<<4)+8|0;i=i+4|0;k[Q>>2]=(k[Q>>2]|0)+-1}while(i>>>0>>0);k[l>>2]=-1;if((c|0)<=1){c=j;break}}}else c=j;while(0);if(R){j=0;h=a;i=0;do{f=k[T+(j<<4)+8>>2]|0;if((f|0)>(n|0)|(f|0)==0){k[T+(j<<4)+12>>2]=-1;h=h+-1|0}else i=(i|0)<(f|0)?f:i;j=j+1|0}while((j|0)!=(a|0));Q=h;r=i}else{Q=a;r=0}f:do if(U){h=b;while(1){o=h;while(1){h=o+-1|0;q=V+(h*24|0)|0;i=k[q>>2]|0;if((i|0)>=0){i=d+(i<<2)|0;n=V+(h*24|0)+4|0;l=i+(k[n>>2]<<2)|0;j=i;m=0;g:while(1){do{if(i>>>0>=l>>>0)break g;f=i;i=i+4|0;f=k[f>>2]|0}while((k[T+(f<<4)+12>>2]|0)<0);k[j>>2]=f;P=m+-1+(k[T+(f<<4)+8>>2]|0)|0;j=j+4|0;m=(P|0)>(b|0)?b:P}i=j-(d+(k[q>>2]<<2))>>2;if(!i)break;k[n>>2]=i;k[V+(h*24|0)+12>>2]=m}if((o|0)>1)o=h;else{P=c;break f}}i=c+-1|0;k[V+(h*24|0)+12>>2]=i;k[q>>2]=-1;if((o|0)>1)c=i;else{P=i;break}}}else P=c;while(0);iF(e|0,-1,(b<<2)+4|0)|0;h=b;h:while(1){do{O=h;h=h+-1|0;if((O|0)<=0)break h}while((k[V+(h*24|0)>>2]|0)<=-1);i=e+(k[V+(h*24|0)+12>>2]<<2)|0;f=k[i>>2]|0;k[V+(h*24|0)+16>>2]=-1;k[V+(h*24|0)+20>>2]=f;if((f|0)!=-1)k[V+(f*24|0)+16>>2]=h;k[i>>2]=h}O=2147483647-b|0;if(R){h=0;do{i=T+(h<<4)+12|0;if((k[i>>2]|0)>-1)k[i>>2]=0;h=h+1|0}while((h|0)!=(a|0))}if((P|0)>0){M=b+1|0;L=R^1;N=d;j=y;c=0;m=1;K=r;h=0;l=0;while(1){while(1){i=e+(h<<2)|0;t=k[i>>2]|0;if((h|0)<(b|0)&(t|0)==-1)h=h+1|0;else break}f=k[V+(t*24|0)+20>>2]|0;k[i>>2]=f;if((f|0)!=-1)k[V+(f*24|0)+16>>2]=-1;x=V+(t*24|0)+12|0;J=k[x>>2]|0;k[x>>2]=c;x=V+(t*24|0)+8|0;y=k[x>>2]|0;c=y+c|0;I=b-c|0;do if((((I|0)<(J|0)?I:J)+j|0)<(S|0))H=m;else{s=d+(j<<2)|0;if(U){r=0;i=d;do{o=V+(r*24|0)|0;j=k[o>>2]|0;if((j|0)>-1){f=i-N>>2;k[o>>2]=f;q=V+(r*24|0)+4|0;n=k[q>>2]|0;if((n|0)>0){m=0;j=d+(j<<2)|0;while(1){f=k[j>>2]|0;if((k[T+(f<<4)+12>>2]|0)>-1){k[i>>2]=f;i=i+4|0}m=m+1|0;if((m|0)==(n|0))break;else j=j+4|0}f=k[o>>2]|0}k[q>>2]=i-(d+(f<<2))>>2}r=r+1|0}while((r|0)!=(b|0))}else i=d;if(R){f=0;do{j=T+(f<<4)+12|0;do if((k[j>>2]|0)>-1)if(!(k[T+(f<<4)+4>>2]|0)){k[j>>2]=-1;break}else{J=d+(k[T+(f<<4)>>2]<<2)|0;k[j>>2]=k[J>>2];k[J>>2]=~f;break}while(0);f=f+1|0}while((f|0)!=(a|0));f=i;j=i}else{f=i;j=i}i:while(1){while(1){if(f>>>0>=s>>>0)break i;i=k[f>>2]|0;if((i|0)<0)break;else f=f+4|0}r=~i;k[f>>2]=k[T+(r<<4)+12>>2];i=j-N>>2;q=T+(r<<4)|0;k[q>>2]=i;r=T+(r<<4)+4|0;o=k[r>>2]|0;if((o|0)>0){m=0;n=f;while(1){i=k[n>>2]|0;if((k[V+(i*24|0)>>2]|0)>-1){k[j>>2]=i;j=j+4|0}m=m+1|0;if((m|0)==(o|0))break;else n=n+4|0}f=f+(o<<2)|0;i=k[q>>2]|0}k[r>>2]=j-(d+(i<<2))>>2}j=j-N>>2;l=l+1|0;if(R)i=0;else{H=1;break}do{f=T+(i<<4)+12|0;if((k[f>>2]|0)>-1)k[f>>2]=0;i=i+1|0}while((i|0)!=(a|0));H=1}while(0);k[x>>2]=0-y;I=V+(t*24|0)|0;i=d+(k[I>>2]<<2)|0;w=V+(t*24|0)+4|0;v=i+(k[w>>2]<<2)|0;q=0;J=j;j:while(1){do{do{if(i>>>0>=v>>>0)break j;f=i;i=i+4|0;f=k[f>>2]|0}while((k[T+(f<<4)+12>>2]|0)<0);m=k[T+(f<<4)+4>>2]|0}while((m|0)<=0);f=d+(k[T+(f<<4)>>2]<<2)|0;t=f+(m<<2)|0;s=J;while(1){while(1){o=f+4|0;f=k[f>>2]|0;m=V+(f*24|0)+8|0;n=k[m>>2]|0;if((n|0)>0?(k[V+(f*24|0)>>2]|0)>-1:0)break;if(o>>>0>>0)f=o;else{J=s;continue j}}q=n+q|0;r=s+1|0;k[m>>2]=0-n;k[d+(s<<2)>>2]=f;if(o>>>0>>0){f=o;s=r}else{J=r;continue j}}}k[x>>2]=y;K=(K|0)<(q|0)?q:K;i=d+(k[I>>2]<<2)|0;G=k[w>>2]|0;f=i+(G<<2)|0;if((G|0)>0)do{k[T+(k[i>>2]<<4)+12>>2]=-1;i=i+4|0}while(i>>>0>>0);i=J-j|0;if((i|0)>0){E=k[d+(k[I>>2]<<2)>>2]|0;G=d+(j<<2)|0;F=G+(i<<2)|0;r=G;do{m=k[r>>2]|0;r=r+4|0;i=V+(m*24|0)+8|0;s=k[i>>2]|0;k[i>>2]=0-s;i=k[V+(m*24|0)+16>>2]|0;f=k[V+(m*24|0)+20>>2]|0;k[((i|0)==-1?e+(k[V+(m*24|0)+12>>2]<<2)|0:V+(i*24|0)+20|0)>>2]=f;if((f|0)!=-1)k[V+(f*24|0)+16>>2]=i;i=d+(k[V+(m*24|0)>>2]<<2)|0;D=k[V+(m*24|0)+4>>2]|0;o=i+(D<<2)|0;if((D|0)>0)do{m=k[i>>2]|0;i=i+4|0;n=T+(m<<4)+12|0;f=k[n>>2]|0;if((f|0)>=0){f=f-H|0;if((f|0)<0)f=k[T+(m<<4)+8>>2]|0;D=f+s|0;k[n>>2]=(D|0)==0?-1:D+H|0}}while(i>>>0>>0)}while(r>>>0>>0);i=c;f=G;k:while(1){while(1){x=k[f>>2]|0;t=V+(x*24|0)|0;c=d+(k[t>>2]<<2)|0;v=V+(x*24|0)+4|0;w=c+(k[v>>2]<<2)|0;o=0;r=c;s=0;l:while(1){do{if(c>>>0>=w>>>0)break l;m=c;c=c+4|0;m=k[m>>2]|0;n=k[T+(m<<4)+12>>2]|0}while((n|0)<0);D=n-H+s|0;k[r>>2]=m;o=m+o|0;r=r+4|0;s=(D|0)>(b|0)?b:D}f=f+4|0;D=r-(d+(k[t>>2]<<2))>>2;k[v>>2]=D;if(!D)break;k[V+(x*24|0)+12>>2]=s;n=(o>>>0)%(M>>>0)|0;c=e+(n<<2)|0;m=k[c>>2]|0;if((m|0)>-1){D=V+(m*24|0)+16|0;c=k[D>>2]|0;k[D>>2]=x}else{k[c>>2]=-2-x;c=-2-m|0}k[V+(x*24|0)+20>>2]=c;k[V+(x*24|0)+16>>2]=n;if(f>>>0>=F>>>0)break k}k[t>>2]=-1;D=k[V+(x*24|0)+8>>2]|0;c=q-D|0;k[V+(x*24|0)+12>>2]=i;i=D+i|0;if(f>>>0>>0)q=c;else{q=c;break}}D=G;while(1){f=k[D>>2]|0;D=D+4|0;if((k[V+(f*24|0)>>2]|0)>=0){A=e+(k[V+(f*24|0)+16>>2]<<2)|0;B=k[A>>2]|0;C=(B|0)>-1;if(C)f=k[V+(B*24|0)+16>>2]|0;else f=-2-B|0;m:do if((f|0)!=-1)do{v=k[V+(f*24|0)+4>>2]|0;z=V+(f*24|0)+20|0;c=k[z>>2]|0;if((c|0)==-1)break m;x=V+(f*24|0)+12|0;w=V+(f*24|0)|0;y=V+(f*24|0)+8|0;n:do if((v|0)>0){m=f;do{do if((k[V+(c*24|0)+4>>2]|0)==(v|0)){s=V+(c*24|0)+12|0;if((k[s>>2]|0)!=(k[x>>2]|0)){m=c;break}t=V+(c*24|0)|0;o=d+(k[t>>2]<<2)|0;n=0;r=d+(k[w>>2]<<2)|0;while(1){if((k[r>>2]|0)!=(k[o>>2]|0))break;n=n+1|0;if((n|0)<(v|0)){o=o+4|0;r=r+4|0}else break}if((n|0)!=(v|0)){m=c;break}r=V+(c*24|0)+8|0;k[y>>2]=(k[y>>2]|0)+(k[r>>2]|0);k[r>>2]=f;k[t>>2]=-2;k[s>>2]=-1;k[V+(m*24|0)+20>>2]=k[V+(c*24|0)+20>>2]}else m=c;while(0);c=k[V+(c*24|0)+20>>2]|0}while((c|0)!=-1)}else{if(!v){n=c;c=f}else{f=c;while(1){f=k[V+(f*24|0)+20>>2]|0;if((f|0)==-1)break n}}do{do if(!(k[V+(n*24|0)+4>>2]|0)){m=V+(n*24|0)+12|0;if((k[m>>2]|0)!=(k[x>>2]|0)){c=n;break}w=V+(n*24|0)+8|0;k[y>>2]=(k[y>>2]|0)+(k[w>>2]|0);k[w>>2]=f;k[V+(n*24|0)>>2]=-2;k[m>>2]=-1;k[V+(c*24|0)+20>>2]=k[V+(n*24|0)+20>>2]}else c=n;while(0);n=k[V+(n*24|0)+20>>2]|0}while((n|0)!=-1)}while(0);f=k[z>>2]|0}while((f|0)!=-1);while(0);k[(C?V+(B*24|0)+16|0:A)>>2]=-1}if(D>>>0>=F>>>0){x=E;c=i;w=q;v=F;t=G;break}}}else{t=d+(j<<2)|0;x=-1;w=q;v=t+(i<<2)|0}k[I>>2]=-1;i=H+1+K|0;f=(i|0)<(O|0);if(f|L)m=f?i:1;else{i=0;do{f=T+(i<<4)+12|0;if((k[f>>2]|0)>-1)k[f>>2]=0;i=i+1|0}while((i|0)!=(a|0));m=1}s=b-c|0;r=t;i=t;o:while(1){do{if(i>>>0>=v>>>0)break o;q=i;i=i+4|0;q=k[q>>2]|0;f=V+(q*24|0)|0}while((k[f>>2]|0)<0);k[r>>2]=q;n=k[f>>2]|0;o=V+(q*24|0)+4|0;f=k[o>>2]|0;k[o>>2]=f+1;k[d+(f+n<<2)>>2]=x;n=V+(q*24|0)+12|0;f=k[V+(q*24|0)+8>>2]|0;o=s-f|0;f=(k[n>>2]|0)+w-f|0;f=(o|0)<(f|0)?o:f;k[n>>2]=f;n=e+(f<<2)|0;o=k[n>>2]|0;k[V+(q*24|0)+20>>2]=o;k[V+(q*24|0)+16>>2]=-1;if((o|0)!=-1)k[V+(o*24|0)+16>>2]=q;k[n>>2]=q;r=r+4|0;h=(f|0)<(h|0)?f:h}if((w|0)>0){k[T+(x<<4)>>2]=j;k[T+(x<<4)+4>>2]=r-t>>2;k[T+(x<<4)+8>>2]=w;k[T+(x<<4)+12>>2]=0}if((c|0)>=(P|0))break;else j=J}}else l=0;if(U){j=0;do{do if((k[V+(j*24|0)>>2]|0)!=-1){if((k[V+(j*24|0)+12>>2]|0)==-1)i=j;else break;do i=k[V+(i*24|0)+8>>2]|0;while((k[V+(i*24|0)>>2]|0)!=-1);c=V+(i*24|0)+12|0;h=k[c>>2]|0;f=j;while(1){d=h;h=h+1|0;k[V+(f*24|0)+12>>2]=d;k[V+(f*24|0)+8>>2]=i;if((k[c>>2]|0)!=-1)break;else f=i}k[c>>2]=h}while(0);j=j+1|0}while((j|0)!=(b|0));h=0;do{k[e+(k[V+(h*24|0)+12>>2]<<2)>>2]=h;h=h+1|0}while((h|0)!=(b|0))}k[g>>2]=a-Q;k[g+4>>2]=b-P;k[g+8>>2]=l;g=1;u=W;return g|0}function gi(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;i=k[d>>2]|0;h=(b|0)==1?i:k[c>>2]|0;f=i-h|0;d=(f|0)/(((b|0)<2?1:b+-1|0)|0)|0;e=(f|0)>-1?f:0-f|0;c=e+1|0;e=(((i|0)>=(h|0)?b:0-b|0)+f|0)/(((e|0)==-1?1:c)|0)|0;if((b|0)<=1)if((b|0)>-1)g=0;else Oa(11919,12068,74,12145);else g=(c|0)<(b|0)&1;if((k[a+4>>2]|0)!=(b|0))Oa(14445,14320,257,12780);f=k[a>>2]|0;if((b|0)<=0)return a|0;if(!(g<<24>>24)){c=0;do{i=(aa(c,d)|0)+h|0;k[f+(c<<2)>>2]=i;c=c+1|0}while((c|0)!=(b|0));return a|0}else{c=0;do{k[f+(c<<2)>>2]=((c|0)/(e|0)|0)+h;c=c+1|0}while((c|0)!=(b|0));return a|0}return 0}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((a|0)<=-1)Oa(16605,15693,425,29764);g=b+4|0;c=k[g>>2]|0;if((c|0)<=(a|0))Oa(16605,15693,425,29764);f=k[b>>2]|0;while(1){d=f+(a<<2)|0;e=k[d>>2]|0;if(!((e|0)>-1&(c|0)>(e|0))){b=6;break}b=a;a=k[f+(e<<2)>>2]|0;if((a|0)==(e|0)){b=12;break}if((c|0)<=(b|0)){b=9;break}k[d>>2]=a;c=k[g>>2]|0;if(!((a|0)>-1&(c|0)>(a|0))){b=11;break}}if((b|0)==6)Oa(16605,15693,425,29764);else if((b|0)==9)Oa(16605,15693,425,29764);else if((b|0)==11)Oa(16605,15693,425,29764);else if((b|0)==12)return e|0;return 0}function ii(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;l=c+4|0;m=e+4|0;n=d+4|0;o=b+4|0;g=a;a:while(1){i=k[l>>2]|0;j=k[c>>2]|0;if((f|0)==(a|0)){f=17;break}while(1){if(!((g|0)>-1&(i|0)>(g|0))){f=4;break a}h=k[j+(g<<2)>>2]|0;if((h|0)==-1)break;else g=h}if((k[m>>2]|0)<=(g|0)){f=8;break}j=k[e>>2]|0;h=g;while(1){k[j+(h<<2)>>2]=f;if((k[n>>2]|0)<=(h|0)){f=10;break a}g=k[(k[d>>2]|0)+(h<<2)>>2]|0;i=f+1|0;if((g|0)!=-1)break;if((k[o>>2]|0)<=(h|0)){f=13;break a}h=k[(k[b>>2]|0)+(h<<2)>>2]|0;if(!((h|0)>-1?(k[m>>2]|0)>(h|0):0)){f=15;break a}else f=i}if((f|0)==(a|0)){f=17;break}else f=i}if((f|0)==4)Oa(16605,15693,425,29764);else if((f|0)==8)Oa(16605,15693,425,29764);else if((f|0)==10)Oa(16605,15693,425,29764);else if((f|0)==13)Oa(16605,15693,425,29764);else if((f|0)==15)Oa(16605,15693,425,29764);else if((f|0)==17)return}function ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c+4|0;b=k[e>>2]|0;k[a>>2]=0;f=a+4|0;k[f>>2]=0;Ef(a,b);if((k[e>>2]|0)!=(k[d+4>>2]|0))Oa(18808,15045,218,18833);if((k[f>>2]|0)<=0)return;e=k[d>>2]|0;c=k[c>>2]|0;d=k[a>>2]|0;b=0;do{k[d+(b<<2)>>2]=k[c+(k[e+(b<<2)>>2]<<2)>>2];b=b+1|0}while((b|0)<(k[f>>2]|0));return}function ki(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=h+88|0;k[q>>2]=0;n=d+1|0;j=(aa(n,f)|0)/(c|0)|0;j=aa((j|0)>(b|0)?b:j,c)|0;o=h+52|0;k[o>>2]=j;p=h+80|0;k[p>>2]=j;f=(aa((f|0)>4?f:4,n)|0)/4|0;n=h+48|0;k[n>>2]=f;if((e|0)==-1){r=c+20+(c*20|0)+((aa((g<<1)+7|0,b)|0)+f+j<<2)+(j+(aa(g+1|0,b)|0)+j<<3)|0;return r|0}b=c+1|0;Ef(h,b);Ef(h+8|0,b);Ef(h+40|0,b);Ef(h+32|0,b);Ef(h+72|0,b);b=h+16|0;j=h+20|0;c=h+60|0;e=h+28|0;g=h+68|0;l=h+56|0;m=h+24|0;f=h+64|0;do{if(!((((yi(a,b,o,0,0,q)|0)>=0?(yi(a,l,p,0,0,q)|0)>=0:0)?(zi(a,m,n,0,0,q)|0)>=0:0)?(zi(a,f,p,0,1,q)|0)>=0:0))r=8;if((r|0)==8?(r=0,i=(k[o>>2]|0)/2|0,k[o>>2]=i,k[p>>2]=(k[p>>2]|0)/2|0,k[n>>2]=(k[n>>2]|0)/2|0,(i|0)<(d|0)):0){r=11;break}}while((k[j>>2]|0)==0|(k[c>>2]|0)==0|(k[e>>2]|0)==0|(k[g>>2]|0)==0);if((r|0)==11)return i|0;k[q>>2]=(k[q>>2]|0)+1;r=0;return r|0}function li(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+32|0;B=C+24|0;A=C+16|0;z=C+8|0;y=C;k[B>>2]=0;n=B+4|0;k[n>>2]=0;ei(b,c,B);j=b+1|0;k[A>>2]=0;v=A+4|0;k[v>>2]=0;Ef(A,j);a:do if((b|0)>=0){g=k[B>>2]|0;h=k[A>>2]|0;a=0;while(1){if((k[n>>2]|0)<=(a|0)){a=5;break}i=k[g+(a<<2)>>2]|0;if(!((i|0)>-1?(k[v>>2]|0)>(i|0):0)){a=7;break}k[h+(i<<2)>>2]=a;if((a|0)<(b|0))a=a+1|0;else break a}if((a|0)==5)Oa(16605,15693,425,29764);else if((a|0)==7)Oa(16605,15693,425,29764)}while(0);k[z>>2]=0;o=z+4|0;k[o>>2]=0;Ef(z,b);k[y>>2]=0;t=y+4|0;k[t>>2]=0;Ef(y,j);q=(b|0)>0;b:do if(q){h=c+4|0;i=k[c>>2]|0;j=k[B>>2]|0;l=k[z>>2]|0;g=0;while(1){if((k[h>>2]|0)<=(g|0)){a=17;break}m=k[i+(g<<2)>>2]|0;if((m|0)<=-1){a=20;break}a=k[n>>2]|0;if((a|0)<=(m|0)){a=20;break}if((a|0)<=(g|0)){a=22;break}a=k[j+(g<<2)>>2]|0;if(!((a|0)>-1?(k[o>>2]|0)>(a|0):0)){a=24;break}k[l+(a<<2)>>2]=k[j+(m<<2)>>2];g=g+1|0;if((g|0)>=(b|0)){w=h;x=c;p=i;break b}}if((a|0)==17)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==22)Oa(16605,15693,425,29764);else if((a|0)==24)Oa(16605,15693,425,29764)}else{w=c+4|0;x=c;p=k[c>>2]|0}while(0);g=k[w>>2]|0;if((k[t>>2]|0)!=(g|0)?(Ng(y,g,1),(k[t>>2]|0)!=(g|0)):0)Oa(12160,12207,721,12285);h=k[y>>2]|0;if((g|0)>0){a=0;do{k[h+(a<<2)>>2]=k[p+(a<<2)>>2];a=a+1|0}while((a|0)!=(g|0))}i=k[z>>2]|0;g=k[o>>2]|0;if((k[w>>2]|0)!=(g|0)?(Ng(c,g,1),(k[w>>2]|0)!=(g|0)):0)Oa(12160,12207,721,12285);h=k[x>>2]|0;if((g|0)>0){a=0;do{k[h+(a<<2)>>2]=k[i+(a<<2)>>2];a=a+1|0}while((a|0)!=(g|0))}s=f+4|0;a=k[s>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[f>>2]|0,-1,a<<2|0)|0;r=e+4|0;a=k[r>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[e>>2]|0,0,a<<2|0)|0;c:do if(q){g=k[x>>2]|0;h=k[e>>2]|0;a=0;while(1){if((k[w>>2]|0)<=(a|0)){a=42;break}i=k[g+(a<<2)>>2]|0;if((i|0)!=(b|0)){j=k[r>>2]|0;if((j|0)<=(a|0)){a=45;break}if(!((i|0)>-1&(j|0)>(i|0))){a=47;break}p=h+(i<<2)|0;k[p>>2]=(k[h+(a<<2)>>2]|0)+1+(k[p>>2]|0)}a=a+1|0;if((a|0)>=(b|0)){a=50;break}}if((a|0)==42)Oa(16605,15693,425,29764);else if((a|0)==45)Oa(16605,15693,425,29764);else if((a|0)==47)Oa(16605,15693,425,29764);else if((a|0)==50){if(!q)break;o=0;d:while(1){h=k[w>>2]|0;if((h|0)<=(o|0)){a=54;break}i=k[x>>2]|0;j=k[r>>2]|0;p=k[e>>2]|0;a=o;while(1){g=k[i+(a<<2)>>2]|0;if((g|0)==(b|0))break;if(!((g|0)>-1&(j|0)>(g|0))){a=58;break d}if((k[p+(g<<2)>>2]|0)>=(d|0))break;if((h|0)>(g|0))a=g;else{a=61;break d}}m=(a|0)<(o|0);n=k[v>>2]|0;if(m)g=b;else{i=k[A>>2]|0;j=(o|0)>-1;g=b;h=o;while(1){if(!(j&(n|0)>(h|0))){a=67;break d}q=k[i+(h<<2)>>2]|0;g=(q|0)<(g|0)?q:g;if((h|0)<(a|0))h=h+1|0;else break}}if(!((a|0)>-1&(n|0)>(a|0))){a=65;break}l=k[A>>2]|0;h=k[l+(a<<2)>>2]|0;e:do if((h-g|0)==(a-o|0)){if(!((g|0)>-1?(k[s>>2]|0)>(g|0):0)){a=73;break d}k[(k[f>>2]|0)+(g<<2)>>2]=h}else{if(m)break;i=k[f>>2]|0;j=(o|0)>-1;if(j&(n|0)>(o|0))g=o;else{a=75;break d}while(1){h=k[l+(g<<2)>>2]|0;if((k[r>>2]|0)<=(g|0)){a=77;break d}if(!(k[p+(g<<2)>>2]|0)){if(!((h|0)>-1?(k[s>>2]|0)>(h|0):0)){a=80;break d}k[i+(h<<2)>>2]=h}if((g|0)>=(a|0))break e;g=g+1|0;if(!(j&(k[v>>2]|0)>(g|0))){a=75;break d}}}while(0);h=k[r>>2]|0;i=k[e>>2]|0;j=(a|0)>-2;do{a=a+1|0;if(!(j&(h|0)>(a|0))){a=86;break d}g=(a|0)<(b|0)}while(g&(k[i+(a<<2)>>2]|0)!=0);if(g)o=a;else break c}switch(a|0){case 54:{Oa(16605,15693,425,29764);break}case 58:{Oa(16605,15693,425,29764);break}case 61:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 73:{Oa(16605,15693,425,29764);break}case 75:{Oa(16605,15693,425,29764);break}case 77:{Oa(16605,15693,425,29764);break}case 80:{Oa(16605,15693,425,29764);break}case 86:{Oa(16605,15693,425,29764);break}}}}while(0);i=k[y>>2]|0;h=k[t>>2]|0;if((k[w>>2]|0)!=(h|0)?(Ng(c,h,1),(k[w>>2]|0)!=(h|0)):0)Oa(12160,12207,721,12285);g=k[x>>2]|0;if((h|0)>0){a=0;do{k[g+(a<<2)>>2]=k[i+(a<<2)>>2];a=a+1|0}while((a|0)!=(h|0))}a=k[y>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[z>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[A>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[B>>2]|0;if(!a){u=C;return}Pq(k[a+-4>>2]|0);u=C;return}function mi(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=f+4|0;a=k[p>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[f>>2]|0,-1,a<<2|0)|0;o=e+4|0;a=k[o>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[e>>2]|0,0,a<<2|0)|0;m=(b|0)>0;if(!m)return;g=c+4|0;h=k[c>>2]|0;i=k[e>>2]|0;a=0;while(1){if((k[g>>2]|0)<=(a|0)){a=14;break}j=k[h+(a<<2)>>2]|0;if((j|0)!=(b|0)){l=k[o>>2]|0;if((l|0)<=(a|0)){a=17;break}if(!((j|0)>-1&(l|0)>(j|0))){a=19;break}n=i+(j<<2)|0;k[n>>2]=(k[i+(a<<2)>>2]|0)+1+(k[n>>2]|0)}a=a+1|0;if((a|0)>=(b|0)){a=11;break}}if((a|0)==11){if(!m)return;l=c+4|0;h=0;m=k[o>>2]|0;n=k[e>>2]|0;a:while(1){i=k[l>>2]|0;j=k[c>>2]|0;a=h;while(1){if((i|0)<=(a|0)){a=26;break a}g=k[j+(a<<2)>>2]|0;if((g|0)==(b|0))break;if(!((g|0)>-1&(m|0)>(g|0))){a=29;break a}if((k[n+(g<<2)>>2]|0)<(d|0))a=g;else break}if(!((h|0)>-1?(k[p>>2]|0)>(h|0):0)){a=32;break}k[(k[f>>2]|0)+(h<<2)>>2]=a;m=k[o>>2]|0;n=k[e>>2]|0;h=(a|0)>-2;do{a=a+1|0;if(!(h&(m|0)>(a|0))){a=35;break a}g=(a|0)<(b|0)}while(g&(k[n+(a<<2)>>2]|0)!=0);if(!g){a=24;break}else h=a}if((a|0)==24)return;else if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==29)Oa(16605,15693,425,29764);else if((a|0)==32)Oa(16605,15693,425,29764);else if((a|0)==35)Oa(16605,15693,425,29764)}else if((a|0)==14)Oa(16605,15693,425,29764);else if((a|0)==17)Oa(16605,15693,425,29764);else if((a|0)==19)Oa(16605,15693,425,29764)}function ni(a,b,c,d,e,f,g,h,i,j,l,m,n,o,q,r){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;q=q|0;r=r|0;var s=0,t=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;Q=u;u=u+48|0;L=Q+32|0;M=Q+24|0;N=Q+12|0;O=Q;s=(k[n>>2]|0)+(b<<2)|0;t=(b|0)>-1;if(!(t|(s|0)==0))Oa(13818,13988,175,14058);P=n+4|0;if((b|0)<0?1:((k[P>>2]|0)-b|0)<(b|0))Oa(14177,13744,147,13812);k[g>>2]=0;k[M>>2]=d;k[M+4>>2]=s;J=d+c|0;if((c|0)<=0){u=Q;return}E=l+4|0;F=h+4|0;G=e+20|0;H=e+24|0;I=e+12|0;B=e+16|0;C=N+4|0;D=O+4|0;if(t){y=d;a:while(1){s=aa(y-d|0,b)|0;k[L>>2]=s;z=(k[l>>2]|0)+(s<<2)|0;if((s|b|0)<0?1:((k[E>>2]|0)-b|0)<(s|0)){s=24;break}A=(k[h>>2]|0)+(s<<3)|0;if(((k[F>>2]|0)-b|0)<(s|0)){s=28;break}w=k[G>>2]|0;x=k[H>>2]|0;s=k[I>>2]|0;e=k[s+(y<<2)>>2]|0;c=k[B>>2]|0;if(!c)v=k[s+(y+1<<2)>>2]|0;else v=(k[c+(y<<2)>>2]|0)+e|0;if((e|0)<(v|0))do{s=k[x+(e<<2)>>2]|0;if(!((s|0)>-1&(s|0)<(b|0))){s=35;break a}p[A+(s<<3)>>3]=+p[w+(e<<3)>>3];c=k[P>>2]|0;if((c|0)<=(s|0)){s=37;break a}t=k[n>>2]|0;if((k[t+(s<<2)>>2]|0)!=(y|0)){k[N>>2]=z;k[C>>2]=b;k[O>>2]=t;k[D>>2]=c;if(!((t|0)==0|(c|0)>-1)){s=40;break a}Ai(a,y,f,g,i,j,N,m,O,o,q,r,L,s,M)}e=e+1|0}while((e|0)<(v|0));y=y+1|0;if((y|0)>=(J|0)){s=20;break}}if((s|0)==20){u=Q;return}else if((s|0)==24)Oa(14177,13744,147,13812);else if((s|0)==28)Oa(14177,13744,147,13812);else if((s|0)==35)Oa(16605,15693,425,29764);else if((s|0)==37)Oa(16605,15693,425,29764);else if((s|0)==40)Oa(13818,13988,175,14058)}else K=d;b:while(1){s=aa(K-d|0,b)|0;k[L>>2]=s;if((k[l>>2]|0)+(s<<2)|0){s=22;break}if((s|b|0)<0?1:((k[E>>2]|0)-b|0)<(s|0)){s=24;break}if((k[h>>2]|0)+(s<<3)|0){s=26;break}if(((k[F>>2]|0)-b|0)<(s|0)){s=28;break}w=k[G>>2]|0;x=k[H>>2]|0;s=k[I>>2]|0;e=k[s+(K<<2)>>2]|0;c=k[B>>2]|0;if(!c)v=k[s+(K+1<<2)>>2]|0;else v=(k[c+(K<<2)>>2]|0)+e|0;if((e|0)<(v|0))do{s=k[x+(e<<2)>>2]|0;if(!((s|0)>-1&(s|0)<(b|0))){s=35;break b}p[0+(s<<3)>>3]=+p[w+(e<<3)>>3];c=k[P>>2]|0;if((c|0)<=(s|0)){s=37;break b}t=k[n>>2]|0;if((k[t+(s<<2)>>2]|0)!=(K|0)){k[N>>2]=0;k[C>>2]=b;k[O>>2]=t;k[D>>2]=c;if(!((t|0)==0|(c|0)>-1)){s=40;break b}Ai(a,K,f,g,i,j,N,m,O,o,q,r,L,s,M)}e=e+1|0}while((e|0)<(v|0));K=K+1|0;if((K|0)>=(J|0)){s=20;break}}if((s|0)==20){u=Q;return}else if((s|0)==22)Oa(13818,13988,175,14058);else if((s|0)==24)Oa(14177,13744,147,13812);else if((s|0)==26)Oa(13818,13988,175,14058);else if((s|0)==28)Oa(14177,13744,147,13812);else if((s|0)==35)Oa(16605,15693,425,29764);else if((s|0)==37)Oa(16605,15693,425,29764);else if((s|0)==40)Oa(13818,13988,175,14058)}function oi(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;Aa=u;u=u+96|0;S=Aa+56|0;T=Aa+52|0;U=Aa+32|0;V=Aa+24|0;W=Aa;if((e|0)<=0){u=Aa;return}X=h+4|0;Y=j+12|0;Z=j+8|0;_=j+4|0;$=j+44|0;ba=j+40|0;ca=d+c|0;da=(c|0)>0;ea=(b|0)>-1;fa=i+4|0;ga=U+4|0;ha=U+8|0;ia=U+12|0;ja=f+4|0;ka=j+36|0;la=j+32|0;ma=j+28|0;na=j+24|0;oa=j+16|0;Q=W+4|0;R=W+8|0;pa=W+12|0;qa=V+4|0;ra=g+4|0;sa=U+12|0;ta=S+4|0;ua=S+12|0;va=S+16|0;wa=S+24|0;xa=j+16|0;ya=j+24|0;O=e;P=0;a:while(1){if((O|0)<1?1:(k[X>>2]|0)<(O|0)){a=4;break}O=O+-1|0;za=k[(k[h>>2]|0)+(O<<2)>>2]|0;if(!((za|0)>-1?(k[Y>>2]|0)>(za|0):0)){a=6;break}a=k[(k[Z>>2]|0)+(za<<2)>>2]|0;if(!((a|0)>-1?(k[_>>2]|0)>(a|0):0)){a=8;break}M=k[(k[j>>2]|0)+(a<<2)>>2]|0;r=za-M|0;I=M+1|0;if((M|0)<=-2){a=11;break}a=k[$>>2]|0;if((a|0)<=(I|0)){a=11;break}l=k[ba>>2]|0;if(!((M|0)>-1&(a|0)>(M|0))){a=13;break}L=k[l+(M<<2)>>2]|0;N=(k[l+(I<<2)>>2]|0)-L+~r|0;if(da){o=k[i>>2]|0;q=(k[fa>>2]|0)-b|0;l=(za|0)<(b|0);if(!ea){a=20;break}if(l){n=d;a=0;l=0}else{a=19;break}while(1){m=aa(n-d|0,b)|0;if((m|b|0)<0|(q|0)<(m|0)){a=27;break a}J=k[o+(m<<2)+(za<<2)>>2]|0;K=(J|0)==-1;J=za-J+1|0;l=K|(J|0)<(l|0)?l:J;a=((K^1)&1)+a|0;n=n+1|0;if((n|0)>=(ca|0)){J=a;K=l;break}}}else{J=0;K=0}if((r|0)>0){B=k[g>>2]|0;if((K|0)<=-1){a=33;break}k[U>>2]=B;k[ga>>2]=K;k[ha>>2]=J;if(!((J|K|0)>-1|(B|0)==0)){a=35;break}if(B&15|0?(aa(K<<3,J)|0)>>>0>=16:0){a=38;break}k[ia>>2]=K;if(da){C=k[i>>2]|0;D=k[f>>2]|0;E=(za|0)<(b|0);F=(k[la>>2]|0)+(M<<2)|0;G=L-M|0;A=K+-1|0;H=k[na>>2]|0;l=0;z=d;a=K;do{m=aa(z-d|0,b)|0;n=C+(m<<2)|0;if(!(ea|(n|0)==0)){a=42;break a}if((m|b|0)<0?1:((k[fa>>2]|0)-b|0)<(m|0)){a=44;break a}y=D+(m<<3)|0;if(!(ea|(y|0)==0)){a=46;break a}if(((k[ja>>2]|0)-b|0)<(m|0)){a=48;break a}if(!E){a=50;break a}m=k[n+(za<<2)>>2]|0;if((m|0)!=-1){x=za-m|0;if((k[ka>>2]|0)<=(M|0)){a=53;break a}k[T>>2]=k[F>>2];o=G+m|0;w=A-x|0;if((w|0)>0){n=aa(k[ia>>2]|0,l)|0;if((l|0)>-1?(k[ha>>2]|0)>(l|0):0)m=0;else{a=65;break a}do{if((a|0)<=(m|0)){a=65;break a}p[B+(n+m<<3)>>3]=0.0;m=m+1|0}while((m|0)<(w|0))}if((x|0)>=0){v=k[ma>>2]|0;a=k[ga>>2]|0;s=aa(k[ia>>2]|0,l)|0;if((l|0)<=-1){a=67;break a}t=(o|0)>-1;r=(k[ha>>2]|0)<=(l|0);q=0;m=o;while(1){if(!(t&(v|0)>(m|0))){a=68;break a}n=k[H+(m<<2)>>2]|0;if(!((n|0)>-1&(n|0)<(b|0))){a=70;break a}o=q+w|0;if((a|0)<=(o|0)|(o|0)<0|r){a=71;break a}p[B+(s+o<<3)>>3]=+p[y+(n<<3)>>3];if((q|0)<(x|0)){q=q+1|0;m=m+1|0}else break}}l=l+1|0}z=z+1|0}while((z|0)<(ca|0))}a=k[ka>>2]|0;if((a|0)<=(M|0)){a=74;break}l=k[la>>2]|0;m=l+(M<<2)|0;n=k[m>>2]|0;k[T>>2]=n;if((a|0)<=(I|0)){a=76;break}o=(k[l+(I<<2)>>2]|0)-(k[m>>2]|0)|0;a=za+1-M-K|0;a=n+a+(aa(o,a)|0)|0;k[T>>2]=a;if((o|0)<=-1){a=78;break}k[W>>2]=(k[oa>>2]|0)+(a<<3);k[Q>>2]=K;k[R>>2]=K;k[pa>>2]=o;k[V>>2]=W;k[qa>>2]=U;Gi(U,V,S);m=(k[T>>2]|0)+K|0;k[T>>2]=m;m=(k[oa>>2]|0)+(m<<3)|0;if(!((K|N|0)>-1|(m|0)==0)){a=80;break}a=aa(K,c)|0;if((k[ra>>2]|0)<=((aa(N,c)|0)+1+a|0)){a=82;break}I=(k[g>>2]|0)+(a<<3)|0;if((N|0)<=-1){a=84;break}a=(J|N|0)>-1;if(!(a|(I|0)==0)){a=86;break}if(!a){a=88;break}H=(N|0)>0;if(H&(J|0)>0){l=N<<3;a=0;do{iF(I+((aa(a,N)|0)<<3)|0,0,l|0)|0;a=a+1|0}while((a|0)!=(J|0))}Bi(N,J,K,m,o,k[U>>2]|0,k[ia>>2]|0,I,N);if(da){C=k[i>>2]|0;D=(k[fa>>2]|0)-b|0;E=k[f>>2]|0;F=(k[ja>>2]|0)-b|0;G=(za|0)<(b|0);z=L-M|0;A=k[ma>>2]|0;B=k[na>>2]|0;w=K+-1|0;x=k[U>>2]|0;y=k[sa>>2]|0;a=0;v=d;do{l=aa(v-d|0,b)|0;m=C+(l<<2)|0;if(!(ea|(m|0)==0)){a=95;break a}if((l|b|0)<0|(D|0)<(l|0)){a=97;break a}t=E+(l<<3)|0;if(!(ea|(t|0)==0)){a=99;break a}if((F|0)<(l|0)){a=101;break a}if(!G){a=103;break a}l=k[m+(za<<2)>>2]|0;if((l|0)!=-1){s=za-l|0;l=z+l|0;if((s|0)>=0){o=w-s|0;q=aa(y,a)|0;r=(l|0)>-1;n=0;while(1){m=l+1|0;if(!(r&(A|0)>(l|0))){a=110;break a}l=k[B+(l<<2)>>2]|0;if(!((l|0)>-1&(l|0)<(b|0))){a=112;break a}M=x+(q+(o+n)<<3)|0;p[t+(l<<3)>>3]=+p[M>>3];p[M>>3]=0.0;if((n|0)<(s|0)){n=n+1|0;l=m}else{l=m;break}}}if(H){q=aa(a,N)|0;r=(l|0)>-1;o=0;while(1){if(!(r&(A|0)>(l|0))){a=116;break a}m=k[B+(l<<2)>>2]|0;n=I+(o+q<<3)|0;if(!((m|0)>-1&(m|0)<(b|0))){a=118;break a}M=t+(m<<3)|0;p[M>>3]=+p[M>>3]-+p[n>>3];p[n>>3]=0.0;o=o+1|0;if((o|0)>=(N|0))break;else l=l+1|0}}a=a+1|0}v=v+1|0}while((v|0)<(ca|0))}}else if(da){s=(za|0)<(b|0);r=d;do{a=aa(r-d|0,b)|0;l=(k[i>>2]|0)+(a<<2)|0;if(!(ea|(l|0)==0)){a=123;break a}if((a|b|0)<0?1:((k[fa>>2]|0)-b|0)<(a|0)){a=125;break a}K=(k[f>>2]|0)+(a<<3)|0;k[S>>2]=K;k[ta>>2]=b;if(!(ea|(K|0)==0)){a=127;break a}k[ua>>2]=f;k[va>>2]=a;K=k[ja>>2]|0;k[wa>>2]=K;if((K-b|0)<(a|0)){a=129;break a}if(!s){a=131;break a}n=k[l+(za<<2)>>2]|0;b:do if((n|0)!=-1){o=za-n|0;q=o+1|0;a=k[ka>>2]|0;if((a|0)<=(M|0)){a=134;break a}l=k[la>>2]|0;m=l+(M<<2)|0;k[T>>2]=k[m>>2];if((a|0)<=(I|0)){a=136;break a}l=(k[l+(I<<2)>>2]|0)-(k[m>>2]|0)|0;a=n-M|0;switch(o|0){case 0:{Ci(q,S,g,xa,T,l,N,ya,L,a);break b}case 1:{Di(q,S,g,xa,T,l,N,ya,L,a);break b}default:if((q|0)==3){Ei(3,S,g,xa,T,l,N,ya,L,a);break b}else{Fi(q,S,g,xa,T,l,N,ya,L,a);break b}}}while(0);r=r+1|0}while((r|0)<(ca|0))}P=P+1|0;if((P|0)>=(e|0)){a=145;break}}switch(a|0){case 4:{Oa(16605,15693,425,29764);break}case 6:{Oa(16605,15693,425,29764);break}case 8:{Oa(16605,15693,425,29764);break}case 11:{Oa(16605,15693,425,29764);break}case 13:{Oa(16605,15693,425,29764);break}case 19:{if((q|b|0)<0)Oa(14177,13744,147,13812);else Oa(16605,15693,425,29764);break}case 20:{a=(o|0)==0;if(l){if(!a)Oa(13818,13988,175,14058);if((q|b|0)<0)Oa(14177,13744,147,13812);else sb()}else{if(!a)Oa(13818,13988,175,14058);if((q|b|0)<0)Oa(14177,13744,147,13812);else Oa(16605,15693,425,29764)}break}case 27:{Oa(14177,13744,147,13812);break}case 33:{Oa(19264,19297,66,19366);break}case 35:{Oa(13818,13988,175,14058);break}case 38:{Oa(19502,13988,191,19698);break}case 42:{Oa(13818,13988,175,14058);break}case 44:{Oa(14177,13744,147,13812);break}case 46:{Oa(13818,13988,175,14058);break}case 48:{Oa(14177,13744,147,13812);break}case 50:{Oa(16605,15693,425,29764);break}case 53:{Oa(16605,15693,425,29764);break}case 65:{Oa(15640,15693,365,29764);break}case 67:{if(!((o|0)>-1&(v|0)>(o|0)))Oa(16605,15693,425,29764);Aa=k[H+(o<<2)>>2]|0;if((Aa|0)>-1&(Aa|0)<(b|0))Oa(15640,15693,365,29764);else Oa(16605,15693,425,29764);break}case 68:{Oa(16605,15693,425,29764);break}case 70:{Oa(16605,15693,425,29764);break}case 71:{Oa(15640,15693,365,29764);break}case 74:{Oa(16605,15693,425,29764);break}case 76:{Oa(16605,15693,425,29764);break}case 78:{Oa(19264,19297,66,19366);break}case 80:{Oa(13818,13988,175,14058);break}case 82:{Oa(19373,19405,145,19491);break}case 84:{Oa(19264,19297,66,19366);break}case 86:{Oa(13818,13988,175,14058);break}case 88:{Oa(11919,12068,74,12145);break}case 95:{Oa(13818,13988,175,14058);break}case 97:{Oa(14177,13744,147,13812);break}case 99:{Oa(13818,13988,175,14058);break}case 101:{Oa(14177,13744,147,13812);break}case 103:{Oa(16605,15693,425,29764);break}case 110:{Oa(16605,15693,425,29764);break}case 112:{Oa(16605,15693,425,29764);break}case 116:{Oa(16605,15693,425,29764);break}case 118:{Oa(16605,15693,425,29764);break}case 123:{Oa(13818,13988,175,14058);break}case 125:{Oa(14177,13744,147,13812);break}case 127:{Oa(13818,13988,175,14058);break}case 129:{Oa(14177,13744,147,13812);break}case 131:{Oa(16605,15693,425,29764);break}case 134:{Oa(16605,15693,425,29764);break}case 136:{Oa(16605,15693,425,29764);break}case 145:{u=Aa;return}}} -function Fs(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 g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+240|0;s=E+200|0;t=E+199|0;v=E+198|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+197|0;r=E+196|0;zs(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}p=C+11|0;q=C+8|0;if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[p>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[p>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(As(d&255,A,r,a,w,i[t>>0]|0,i[v>>0]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Gs(a,k[w>>2]|0,e);o[f>>2]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function Gs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=u;u=u+16|0;e=g;if((a|0)==(b|0)){k[c>>2]=4;d=0.0}else{f=zo()|0;f=k[f>>2]|0;h=zo()|0;k[h>>2]=0;d=+Lq(a,e,qs()|0);a=zo()|0;a=k[a>>2]|0;if(!a){h=zo()|0;k[h>>2]=f}if((k[e>>2]|0)==(b|0)){if((a|0)==34)k[c>>2]=4}else{k[c>>2]=4;d=0.0}}u=g;return +d}function Hs(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+224|0;q=B+198|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;Js(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,x,a,s,w,i[r>>0]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ks(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;k[f+4>>2]=N;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function Is(a){a=a|0;switch(k[a+4>>2]&74){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function Js(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;b=Fr(b)|0;k[f>>2]=b;b=ns(f,32620)|0;Rc[k[(k[b>>2]|0)+32>>2]&7](b,26075,26101,c)|0;c=ns(f,32636)|0;b=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;i[d>>0]=b;Nc[k[(k[c>>2]|0)+20>>2]&63](a,c);os(f);u=e;return}function Ks(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,j=0,l=0;j=u;u=u+16|0;f=j;do if((a|0)==(b|0)){k[c>>2]=4;d=0;a=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;d=0;a=0;break}g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Fo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){l=zo()|0;k[l>>2]=g}if((k[f>>2]|0)==(b|0)){if((e|0)==34){a=-1;d=-1;h=8}}else{a=0;d=0;h=8}if((h|0)==8)k[c>>2]=4}while(0);N=d;u=j;return a|0}function Ls(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+224|0;q=B+198|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;Js(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,x,a,s,w,i[r>>0]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ms(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function Ms(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,j=0;h=u;u=u+16|0;f=h;do if((a|0)==(b|0)){k[c>>2]=4;a=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Fo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){j=zo()|0;k[j>>2]=g}do if((k[f>>2]|0)==(b|0))if(d>>>0>0|(d|0)==0&a>>>0>4294967295|(e|0)==34){k[c>>2]=4;a=-1;break}else break;else{k[c>>2]=4;a=0}while(0)}while(0);u=h;return a|0}function Ns(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+224|0;q=B+198|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;Js(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,x,a,s,w,i[r>>0]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Os(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function Os(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,j=0;h=u;u=u+16|0;f=h;do if((a|0)==(b|0)){k[c>>2]=4;a=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Fo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){j=zo()|0;k[j>>2]=g}do if((k[f>>2]|0)==(b|0))if(d>>>0>0|(d|0)==0&a>>>0>4294967295|(e|0)==34){k[c>>2]=4;a=-1;break}else break;else{k[c>>2]=4;a=0}while(0)}while(0);u=h;return a|0}function Ps(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 g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+224|0;r=C+198|0;s=C+196|0;A=C+184|0;B=C+172|0;t=C+168|0;v=C+8|0;w=C+4|0;x=C;y=Is(d)|0;Js(A,d,r,s);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}p=B+11|0;q=B+8|0;if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(B,a,0);a=(i[p>>0]|0)<0?k[B>>2]|0:B;k[t>>2]=a;k[w>>2]=v;k[x>>2]=0;o=B+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;n=0;h=0;l=1}else{n=g;l=0}}else{n=0;h=0;l=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(l)break;else break a;else{k[c>>2]=0;D=19;break}}else D=19;while(0);if((D|0)==19){D=0;if(l){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[o>>2]|0:d&255;if((k[t>>2]|0)==(a+d|0)){UA(B,d<<1,0);if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(B,a,0);a=(i[p>>0]|0)<0?k[B>>2]|0:B;k[t>>2]=a+d}l=n+12|0;d=k[l>>2]|0;m=n+16|0;if((d|0)==(k[m>>2]|0))d=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,y,a,t,x,i[s>>0]|0,A,v,w,r)|0)break;d=k[l>>2]|0;if((d|0)==(k[m>>2]|0)){Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;g=n;continue}else{k[l>>2]=d+1;qr(i[d>>0]|0)|0;g=n;continue}}s=i[A+11>>0]|0;if((s<<24>>24<0?k[A+4>>2]|0:s&255)|0?(z=k[w>>2]|0,(z-v|0)<160):0){x=k[x>>2]|0;k[w>>2]=z+4;k[z>>2]=x}z=Qs(a,k[t>>2]|0,e,y)|0;j[f>>1]=z;Cs(A,v,k[w>>2]|0,e);if(n){a=k[n+12>>2]|0;if((a|0)==(k[n+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](n)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{D=49;break}else{k[c>>2]=0;D=47;break}}else D=47;while(0);if((D|0)==47?d:0)D=49;if((D|0)==49)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;NA(B);NA(A);u=C;return D|0}function Qs(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,j=0;h=u;u=u+16|0;f=h;do if((a|0)==(b|0)){k[c>>2]=4;a=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Fo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){j=zo()|0;k[j>>2]=g}do if((k[f>>2]|0)==(b|0))if(d>>>0>0|(d|0)==0&a>>>0>65535|(e|0)==34){k[c>>2]=4;a=-1;break}else{a=a&65535;break}else{k[c>>2]=4;a=0}while(0)}while(0);u=h;return a|0}function Rs(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+224|0;q=B+198|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;Js(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,x,a,s,w,i[r>>0]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ss(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;k[f+4>>2]=N;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function Ss(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;h=u;u=u+16|0;f=h;if((a|0)==(b|0)){k[c>>2]=4;d=0;a=0}else{g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Oo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){i=zo()|0;k[i>>2]=g}if((k[f>>2]|0)==(b|0)){if((e|0)==34){k[c>>2]=4;d=(d|0)>0|(d|0)==0&a>>>0>0;a=d?-1:0;d=d?2147483647:-2147483648}}else{k[c>>2]=4;a=0;d=0}}N=d;u=h;return a|0}function Ts(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+224|0;q=B+198|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;Js(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,x,a,s,w,i[r>>0]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Us(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function Us(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;h=u;u=u+16|0;f=h;if((a|0)==(b|0)){k[c>>2]=4;a=0}else{g=zo()|0;g=k[g>>2]|0;e=zo()|0;k[e>>2]=0;a=Oo(a,f,d,qs()|0)|0;d=N;e=zo()|0;e=k[e>>2]|0;if(!e){i=zo()|0;k[i>>2]=g}a:do if((k[f>>2]|0)==(b|0)){do if((e|0)==34){k[c>>2]=4;if((d|0)>0|(d|0)==0&a>>>0>0){a=2147483647;break a}}else{if((d|0)<-1|(d|0)==-1&a>>>0<2147483648){k[c>>2]=4;break}if((d|0)>0|(d|0)==0&a>>>0>2147483647){k[c>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}else{k[c>>2]=4;a=0}while(0)}u=h;return a|0}function Vs(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+112|0;h=y;l=(d-c|0)/12|0;if(l>>>0>100){j=Oq(l)|0;if(!j){h=0;w=0}else{h=j;w=j}}else w=0;n=c;o=h;j=0;while(1){if((n|0)==(d|0))break;m=i[n+11>>0]|0;if(m<<24>>24<0)m=k[n+4>>2]|0;else m=m&255;if(!m){i[o>>0]=2;l=l+-1|0;j=j+1|0}else i[o>>0]=1;n=n+12|0;o=o+1|0}v=0;s=j;a:while(1){j=k[a>>2]|0;do if(j){m=k[j+12>>2]|0;if((m|0)==(k[j+16>>2]|0))j=Pc[k[(k[j>>2]|0)+36>>2]&127](j)|0;else j=qr(i[m>>0]|0)|0;if(Er(j,pr()|0)|0){k[a>>2]=0;o=1;break}else{o=(k[a>>2]|0)==0;break}}else o=1;while(0);m=k[b>>2]|0;if(m){j=k[m+12>>2]|0;if((j|0)==(k[m+16>>2]|0))j=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else j=qr(i[j>>0]|0)|0;if(Er(j,pr()|0)|0){k[b>>2]=0;m=0;j=1}else j=0}else{m=0;j=1}n=k[a>>2]|0;if(!((l|0)!=0&(o^j)))break;j=k[n+12>>2]|0;if((j|0)==(k[n+16>>2]|0))j=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else j=qr(i[j>>0]|0)|0;j=j&255;if(!g)j=Yc[k[(k[e>>2]|0)+12>>2]&63](e,j)|0;t=v+1|0;q=c;p=0;r=h;while(1){if((q|0)==(d|0))break;do if((i[r>>0]|0)==1){n=q+11|0;if((i[n>>0]|0)<0)m=k[q>>2]|0;else m=q;m=i[m+v>>0]|0;if(!g)m=Yc[k[(k[e>>2]|0)+12>>2]&63](e,m)|0;o=l+-1|0;if(j<<24>>24!=m<<24>>24){i[r>>0]=0;m=p;n=s;l=o;break}m=i[n>>0]|0;if(m<<24>>24<0)m=k[q+4>>2]|0;else m=m&255;if((m|0)==(t|0)){i[r>>0]=2;m=1;n=s+1|0;l=o}else{m=1;n=s}}else{m=p;n=s}while(0);q=q+12|0;p=m;r=r+1|0;s=n}if(!p){v=t;continue}j=k[a>>2]|0;m=j+12|0;n=k[m>>2]|0;if((n|0)==(k[j+16>>2]|0))Pc[k[(k[j>>2]|0)+40>>2]&127](j)|0;else{k[m>>2]=n+1;qr(i[n>>0]|0)|0}if((s+l|0)>>>0>1){n=c;o=h;j=s}else{v=t;continue}while(1){if((n|0)==(d|0)){v=t;s=j;continue a}if((i[o>>0]|0)==2){m=i[n+11>>0]|0;if(m<<24>>24<0)m=k[n+4>>2]|0;else m=m&255;if((m|0)!=(t|0)){i[o>>0]=0;j=j+-1|0}}n=n+12|0;o=o+1|0}}do if(n){j=k[n+12>>2]|0;if((j|0)==(k[n+16>>2]|0))j=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else j=qr(i[j>>0]|0)|0;if(Er(j,pr()|0)|0){k[a>>2]=0;l=1;break}else{l=(k[a>>2]|0)==0;break}}else l=1;while(0);do if(m){j=k[m+12>>2]|0;if((j|0)==(k[m+16>>2]|0))j=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else j=qr(i[j>>0]|0)|0;if(!(Er(j,pr()|0)|0))if(l)break;else{x=77;break}else{k[b>>2]=0;x=41;break}}else x=41;while(0);if((x|0)==41)if(l)x=77;if((x|0)==77)k[f>>2]=k[f>>2]|2;while(1){if((c|0)==(d|0)){x=81;break}if((i[h>>0]|0)==2)break;c=c+12|0;h=h+1|0}if((x|0)==81){k[f>>2]=k[f>>2]|4;c=d}Pq(w);u=y;return c|0}function Ws(a){a=a|0;Ur(a);return}function Xs(a){a=a|0;Ur(a);EA(a);return}function Ys(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;g=o+40|0;n=o+16|0;h=o+8|0;j=o+12|0;l=o+4|0;m=o;if(!(k[d+4>>2]&1)){k[h>>2]=-1;m=k[(k[a>>2]|0)+16>>2]|0;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[n>>2]=k[j>>2];k[g>>2]=k[l>>2];n=Oc[m&63](a,n,g,d,e,h)|0;k[b>>2]=n;switch(k[h>>2]|0){case 0:{i[f>>0]=0;break}case 1:{i[f>>0]=1;break}default:{i[f>>0]=1;k[e>>2]=4}}g=k[b>>2]|0}else{l=Fr(d)|0;k[g>>2]=l;l=ns(g,32652)|0;os(g);a=Fr(d)|0;k[g>>2]=a;a=ns(g,32660)|0;os(g);Nc[k[(k[a>>2]|0)+24>>2]&63](n,a);Nc[k[(k[a>>2]|0)+28>>2]&63](n+12|0,a);k[m>>2]=k[c>>2];a=n+24|0;k[g>>2]=k[m>>2];g=(ut(b,g,n,a,l,e,1)|0)==(n|0)&1;i[f>>0]=g;g=k[b>>2]|0;do{a=a+-12|0;aB(a)}while((a|0)!=(n|0))}u=o;return g|0}function Zs(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=tt(a,i,h,d,e,f)|0;u=g;return f|0}function _s(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=st(a,i,h,d,e,f)|0;u=g;return f|0}function $s(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=rt(a,i,h,d,e,f)|0;u=g;return f|0}function at(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=qt(a,i,h,d,e,f)|0;u=g;return f|0}function bt(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=pt(a,i,h,d,e,f)|0;u=g;return f|0}function ct(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=nt(a,i,h,d,e,f)|0;u=g;return f|0}function dt(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=mt(a,i,h,d,e,f)|0;u=g;return f|0}function et(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=lt(a,i,h,d,e,f)|0;u=g;return f|0}function ft(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=it(a,i,h,d,e,f)|0;u=g;return f|0}function gt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;z=u;u=u+320|0;w=z;t=z+208|0;x=z+192|0;y=z+180|0;v=z+176|0;q=z+16|0;r=z+8|0;s=z+4|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[x+(a<<2)>>2]=0;a=a+1|0}a=Fr(d)|0;k[y>>2]=a;a=ns(y,32652)|0;Rc[k[(k[a>>2]|0)+48>>2]&7](a,26075,26101,t)|0;os(y);k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[y+(a<<2)>>2]=0;a=a+1|0}p=y+11|0;o=y+8|0;if((i[p>>0]|0)<0)a=(k[o>>2]&2147483647)+-1|0;else a=10;UA(y,a,0);a=(i[p>>0]|0)<0?k[y>>2]|0:y;k[v>>2]=a;k[r>>2]=q;k[s>>2]=0;n=y+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;A=22;break}}else A=22;while(0);if((A|0)==22){A=0;if(j){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[v>>2]|0)==(a+d|0)){UA(y,d<<1,0);if((i[p>>0]|0)<0)a=(k[o>>2]&2147483647)+-1|0;else a=10;UA(y,a,0);a=(i[p>>0]|0)<0?k[y>>2]|0:y;k[v>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,16,a,v,s,0,x,q,r,t)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}UA(y,(k[v>>2]|0)-a|0,0);t=(i[p>>0]|0)<0?k[y>>2]|0:y;v=qs()|0;k[w>>2]=f;if((rs(t,v,26108,w)|0)!=1)k[e>>2]=4;if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{A=51;break}else{k[c>>2]=0;A=49;break}}else A=49;while(0);if((A|0)==49?d:0)A=51;if((A|0)==51)k[e>>2]=k[e>>2]|2;A=k[b>>2]|0;NA(y);NA(x);u=z;return A|0}function ht(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0;o=k[d>>2]|0;p=(o|0)==(c|0);do if(p){m=(k[l+96>>2]|0)==(a|0);if(!m?(k[l+100>>2]|0)!=(a|0):0){n=5;break}k[d>>2]=c+1;i[c>>0]=m?43:45;k[e>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=i[g+11>>0]|0;if((a|0)==(f|0)?((n<<24>>24<0?k[g+4>>2]|0:n&255)|0)!=0:0){m=k[j>>2]|0;if((m-h|0)>=160){m=0;break}d=k[e>>2]|0;k[j>>2]=m+4;k[m>>2]=d;k[e>>2]=0;m=0;break}g=l+104|0;f=0;while(1){m=l+(f<<2)|0;if((f|0)==26){m=g;break}if((k[m>>2]|0)==(a|0))break;else f=f+1|0}m=m-l|0;f=m>>2;if((m|0)>92)m=-1;else{g=26075+f|0;switch(b|0){case 10:case 8:{if((f|0)>=(b|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-c|0)>=3){m=-1;break a}if((i[o+-1>>0]|0)!=48){m=-1;break a}k[e>>2]=0;m=i[g>>0]|0;k[d>>2]=o+1;i[o>>0]=m;m=0;break a}break}default:{}}m=i[g>>0]|0;k[d>>2]=o+1;i[o>>0]=m;k[e>>2]=(k[e>>2]|0)+1;m=0}}while(0);return m|0}function it(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+352|0;s=E+208|0;t=E+200|0;v=E+196|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+337|0;r=E+336|0;jt(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}o=C+11|0;q=C+8|0;if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(kt(d,A,r,a,w,k[t>>2]|0,k[v>>2]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Bs(a,k[w>>2]|0,e);p[f>>3]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function jt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=u;u=u+16|0;g=f;b=Fr(b)|0;k[g>>2]=b;b=ns(g,32652)|0;Rc[k[(k[b>>2]|0)+48>>2]&7](b,26075,26107,c)|0;c=ns(g,32660)|0;b=Pc[k[(k[c>>2]|0)+12>>2]&127](c)|0;k[d>>2]=b;d=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;k[e>>2]=d;Nc[k[(k[c>>2]|0)+20>>2]&63](a,c);os(g);u=f;return}function kt(a,b,c,d,e,f,g,h,j,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0;p=j;a:do if((a|0)==(f|0))if(i[b>>0]|0){i[b>>0]=0;c=k[e>>2]|0;k[e>>2]=c+1;i[c>>0]=46;e=i[h+11>>0]|0;if(((e<<24>>24<0?k[h+4>>2]|0:e&255)|0)!=0?(o=k[l>>2]|0,(o-p|0)<160):0){j=k[m>>2]|0;k[l>>2]=o+4;k[o>>2]=j;j=0}else j=0}else j=-1;else{if((a|0)==(g|0)?(g=i[h+11>>0]|0,(g<<24>>24<0?k[h+4>>2]|0:g&255)|0):0){if(!(i[b>>0]|0)){j=-1;break}j=k[l>>2]|0;if((j-p|0)>=160){j=0;break}e=k[m>>2]|0;k[l>>2]=j+4;k[j>>2]=e;k[m>>2]=0;j=0;break}f=n+128|0;o=0;while(1){j=n+(o<<2)|0;if((o|0)==32){j=f;break}if((k[j>>2]|0)==(a|0))break;else o=o+1|0}o=j-n|0;j=o>>2;if((o|0)<=124){f=i[26075+j>>0]|0;switch(j|0){case 24:case 25:{j=k[e>>2]|0;if((j|0)!=(d|0)?(i[j+-1>>0]&95)!=(i[c>>0]&127):0){j=-1;break a}k[e>>2]=j+1;i[j>>0]=f;j=0;break a}case 23:case 22:{i[c>>0]=80;break}default:{j=f&95;if((((j|0)==(i[c>>0]|0)?(i[c>>0]=j|128,i[b>>0]|0):0)?(i[b>>0]=0,c=i[h+11>>0]|0,(c<<24>>24<0?k[h+4>>2]|0:c&255)|0):0)?(q=k[l>>2]|0,(q-p|0)<160):0){c=k[m>>2]|0;k[l>>2]=q+4;k[q>>2]=c}}}l=k[e>>2]|0;k[e>>2]=l+1;i[l>>0]=f;if((o|0)>84)j=0;else{k[m>>2]=(k[m>>2]|0)+1;j=0}}else j=-1}while(0);return j|0}function lt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+352|0;s=E+208|0;t=E+200|0;v=E+196|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+337|0;r=E+336|0;jt(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}o=C+11|0;q=C+8|0;if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(kt(d,A,r,a,w,k[t>>2]|0,k[v>>2]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Es(a,k[w>>2]|0,e);p[f>>3]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function mt(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 g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+352|0;s=E+208|0;t=E+200|0;v=E+196|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+337|0;r=E+336|0;jt(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}p=C+11|0;q=C+8|0;if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[p>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[p>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(kt(d,A,r,a,w,k[t>>2]|0,k[v>>2]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Gs(a,k[w>>2]|0,e);o[f>>2]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function nt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+304|0;q=B+200|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;ot(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,x,a,s,w,k[r>>2]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ks(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;k[f+4>>2]=N;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function ot(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;b=Fr(b)|0;k[f>>2]=b;b=ns(f,32652)|0;Rc[k[(k[b>>2]|0)+48>>2]&7](b,26075,26101,c)|0;c=ns(f,32660)|0;b=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;k[d>>2]=b;Nc[k[(k[c>>2]|0)+20>>2]&63](a,c);os(f);u=e;return}function pt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+304|0;q=B+200|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;ot(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,x,a,s,w,k[r>>2]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ms(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function qt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+304|0;q=B+200|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;ot(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,x,a,s,w,k[r>>2]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Os(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function rt(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 g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+304|0;r=C+200|0;s=C+196|0;A=C+184|0;B=C+172|0;t=C+168|0;v=C+8|0;w=C+4|0;x=C;y=Is(d)|0;ot(A,d,r,s);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}p=B+11|0;q=B+8|0;if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(B,a,0);a=(i[p>>0]|0)<0?k[B>>2]|0:B;k[t>>2]=a;k[w>>2]=v;k[x>>2]=0;o=B+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;n=0;h=0;l=1}else{n=g;l=0}}else{n=0;h=0;l=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(l)break;else break a;else{k[c>>2]=0;D=19;break}}else D=19;while(0);if((D|0)==19){D=0;if(l){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[o>>2]|0:d&255;if((k[t>>2]|0)==(a+d|0)){UA(B,d<<1,0);if((i[p>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(B,a,0);a=(i[p>>0]|0)<0?k[B>>2]|0:B;k[t>>2]=a+d}l=n+12|0;d=k[l>>2]|0;m=n+16|0;if((d|0)==(k[m>>2]|0))d=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,y,a,t,x,k[s>>2]|0,A,v,w,r)|0)break;d=k[l>>2]|0;if((d|0)==(k[m>>2]|0)){Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;g=n;continue}else{k[l>>2]=d+4;ur(k[d>>2]|0)|0;g=n;continue}}s=i[A+11>>0]|0;if((s<<24>>24<0?k[A+4>>2]|0:s&255)|0?(z=k[w>>2]|0,(z-v|0)<160):0){x=k[x>>2]|0;k[w>>2]=z+4;k[z>>2]=x}z=Qs(a,k[t>>2]|0,e,y)|0;j[f>>1]=z;Cs(A,v,k[w>>2]|0,e);if(n){a=k[n+12>>2]|0;if((a|0)==(k[n+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](n)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{D=49;break}else{k[c>>2]=0;D=47;break}}else D=47;while(0);if((D|0)==47?d:0)D=49;if((D|0)==49)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;NA(B);NA(A);u=C;return D|0}function st(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+304|0;q=B+200|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;ot(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,x,a,s,w,k[r>>2]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Ss(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;k[f+4>>2]=N;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function tt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+304|0;q=B+200|0;r=B+196|0;z=B+184|0;A=B+172|0;s=B+168|0;t=B+8|0;v=B+4|0;w=B;x=Is(d)|0;ot(z,d,q,r);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}o=A+11|0;p=A+8|0;if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a;k[v>>2]=t;k[w>>2]=0;n=A+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(Gr(d,tr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=ur(k[d>>2]|0)|0;if(!(Gr(d,tr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[s>>2]|0)==(a+d|0)){UA(A,d<<1,0);if((i[o>>0]|0)<0)a=(k[p>>2]&2147483647)+-1|0;else a=10;UA(A,a,0);a=(i[o>>0]|0)<0?k[A>>2]|0:A;k[s>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=ur(k[d>>2]|0)|0;if(ht(d,x,a,s,w,k[r>>2]|0,z,t,v,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+4;ur(k[d>>2]|0)|0;g=m;continue}}r=i[z+11>>0]|0;if((r<<24>>24<0?k[z+4>>2]|0:r&255)|0?(y=k[v>>2]|0,(y-t|0)<160):0){w=k[w>>2]|0;k[v>>2]=y+4;k[y>>2]=w}y=Us(a,k[s>>2]|0,e,x)|0;k[f>>2]=y;Cs(z,t,k[v>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=ur(k[a>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(d)break;else{C=49;break}else{k[c>>2]=0;C=47;break}}else C=47;while(0);if((C|0)==47?d:0)C=49;if((C|0)==49)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;NA(A);NA(z);u=B;return C|0}function ut(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+112|0;h=y;l=(d-c|0)/12|0;if(l>>>0>100){j=Oq(l)|0;if(!j){h=0;w=0}else{h=j;w=j}}else w=0;j=0;n=c;o=h;while(1){if((n|0)==(d|0))break;m=i[n+8+3>>0]|0;if(m<<24>>24<0)m=k[n+4>>2]|0;else m=m&255;if(!m){i[o>>0]=2;j=j+1|0;l=l+-1|0}else i[o>>0]=1;n=n+12|0;o=o+1|0}v=0;s=j;a:while(1){j=k[a>>2]|0;do if(j){m=k[j+12>>2]|0;if((m|0)==(k[j+16>>2]|0))j=Pc[k[(k[j>>2]|0)+36>>2]&127](j)|0;else j=ur(k[m>>2]|0)|0;if(Gr(j,tr()|0)|0){k[a>>2]=0;o=1;break}else{o=(k[a>>2]|0)==0;break}}else o=1;while(0);m=k[b>>2]|0;if(m){j=k[m+12>>2]|0;if((j|0)==(k[m+16>>2]|0))j=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else j=ur(k[j>>2]|0)|0;if(Gr(j,tr()|0)|0){k[b>>2]=0;m=0;j=1}else j=0}else{m=0;j=1}n=k[a>>2]|0;if(!((l|0)!=0&(o^j)))break;j=k[n+12>>2]|0;if((j|0)==(k[n+16>>2]|0))j=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else j=ur(k[j>>2]|0)|0;if(!g)j=Yc[k[(k[e>>2]|0)+28>>2]&63](e,j)|0;t=v+1|0;q=c;p=0;r=h;while(1){if((q|0)==(d|0))break;do if((i[r>>0]|0)==1){n=q+8+3|0;if((i[n>>0]|0)<0)m=k[q>>2]|0;else m=q;m=k[m+(v<<2)>>2]|0;if(!g)m=Yc[k[(k[e>>2]|0)+28>>2]&63](e,m)|0;o=l+-1|0;if((j|0)!=(m|0)){i[r>>0]=0;m=p;n=s;l=o;break}m=i[n>>0]|0;if(m<<24>>24<0)m=k[q+4>>2]|0;else m=m&255;if((m|0)==(t|0)){i[r>>0]=2;m=1;n=s+1|0;l=o}else{m=1;n=s}}else{m=p;n=s}while(0);q=q+12|0;p=m;r=r+1|0;s=n}if(!p){v=t;continue}j=k[a>>2]|0;m=j+12|0;n=k[m>>2]|0;if((n|0)==(k[j+16>>2]|0))Pc[k[(k[j>>2]|0)+40>>2]&127](j)|0;else{k[m>>2]=n+4;ur(k[n>>2]|0)|0}if((s+l|0)>>>0>1){n=c;o=h;j=s}else{v=t;continue}while(1){if((n|0)==(d|0)){v=t;s=j;continue a}if((i[o>>0]|0)==2){m=i[n+8+3>>0]|0;if(m<<24>>24<0)m=k[n+4>>2]|0;else m=m&255;if((m|0)!=(t|0)){i[o>>0]=0;j=j+-1|0}}n=n+12|0;o=o+1|0}}do if(n){j=k[n+12>>2]|0;if((j|0)==(k[n+16>>2]|0))j=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else j=ur(k[j>>2]|0)|0;if(Gr(j,tr()|0)|0){k[a>>2]=0;l=1;break}else{l=(k[a>>2]|0)==0;break}}else l=1;while(0);do if(m){j=k[m+12>>2]|0;if((j|0)==(k[m+16>>2]|0))j=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else j=ur(k[j>>2]|0)|0;if(!(Gr(j,tr()|0)|0))if(l)break;else{x=77;break}else{k[b>>2]=0;x=41;break}}else x=41;while(0);if((x|0)==41)if(l)x=77;if((x|0)==77)k[f>>2]=k[f>>2]|2;while(1){if((c|0)==(d|0)){x=81;break}if((i[h>>0]|0)==2)break;c=c+12|0;h=h+1|0}if((x|0)==81){k[f>>2]=k[f>>2]|4;c=d}Pq(w);u=y;return c|0}function vt(a){a=a|0;Ur(a);return}function wt(a){a=a|0;Ur(a);EA(a);return}function xt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;l=u;u=u+16|0;j=l+4|0;f=l;if(!(k[c+4>>2]&1)){h=k[(k[a>>2]|0)+24>>2]|0;k[f>>2]=k[b>>2];k[j>>2]=k[f>>2];a=bd[h&31](a,j,c,d,e&1)|0}else{a=Fr(c)|0;k[j>>2]=a;a=ns(j,32636)|0;os(j);c=k[a>>2]|0;if(e)Nc[k[c+24>>2]&63](j,a);else Nc[k[c+28>>2]&63](j,a);g=j+11|0;a=i[g>>0]|0;if(a<<24>>24<0){c=a;a=k[j>>2]|0;h=8}else e=j;while(1){if((h|0)==8){e=a;a=c}h=a<<24>>24<0;if((e|0)==((h?k[j>>2]|0:j)+(h?k[j+4>>2]|0:a&255)|0))break;a=i[e>>0]|0;c=k[b>>2]|0;if(c|0){d=c+24|0;f=k[d>>2]|0;if((f|0)==(k[c+28>>2]|0)){h=k[(k[c>>2]|0)+52>>2]|0;a=qr(a)|0;a=Yc[h&63](c,a)|0}else{k[d>>2]=f+1;i[f>>0]=a;a=qr(a)|0}if(Er(a,pr()|0)|0)k[b>>2]=0}c=i[g>>0]|0;a=e+1|0;h=8}a=k[b>>2]|0;NA(j)}u=l;return a|0}function yt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=u;u=u+64|0;g=a;m=a+52|0;n=a+39|0;f=a+16|0;l=a+12|0;j=a+8|0;h=a+4|0;i[m>>0]=i[26326]|0;i[m+1>>0]=i[26327]|0;i[m+2>>0]=i[26328]|0;i[m+3>>0]=i[26329]|0;i[m+4>>0]=i[26330]|0;i[m+5>>0]=i[26331]|0;Lt(m+1|0,30687,1,k[c+4>>2]|0);o=qs()|0;k[g>>2]=e;e=n+(Ft(n,13,o,m,g)|0)|0;m=Gt(n,e,c)|0;o=Fr(c)|0;k[g>>2]=o;Mt(n,m,e,f,l,j,g);os(g);k[h>>2]=k[b>>2];b=k[l>>2]|0;e=k[j>>2]|0;k[g>>2]=k[h>>2];e=Ht(g,f,b,e,c,d)|0;u=a;return e|0}function zt(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;a=u;u=u+96|0;h=a+8|0;n=a;m=a+71|0;g=a+28|0;l=a+24|0;j=a+16|0;i=a+20|0;o=n;k[o>>2]=37;k[o+4>>2]=0;Lt(n+1|0,30692,1,k[c+4>>2]|0);o=qs()|0;p=h;k[p>>2]=e;k[p+4>>2]=f;e=m+(Ft(m,23,o,n,h)|0)|0;f=Gt(m,e,c)|0;n=Fr(c)|0;k[h>>2]=n;Mt(m,f,e,g,l,j,h);os(h);k[i>>2]=k[b>>2];e=k[l>>2]|0;f=k[j>>2]|0;k[h>>2]=k[i>>2];f=Ht(h,g,e,f,c,d)|0;u=a;return f|0}function At(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=u;u=u+64|0;g=a;m=a+52|0;n=a+40|0;f=a+16|0;l=a+12|0;j=a+8|0;h=a+4|0;i[m>>0]=i[26326]|0;i[m+1>>0]=i[26327]|0;i[m+2>>0]=i[26328]|0;i[m+3>>0]=i[26329]|0;i[m+4>>0]=i[26330]|0;i[m+5>>0]=i[26331]|0;Lt(m+1|0,30687,0,k[c+4>>2]|0);o=qs()|0;k[g>>2]=e;e=n+(Ft(n,12,o,m,g)|0)|0;m=Gt(n,e,c)|0;o=Fr(c)|0;k[g>>2]=o;Mt(n,m,e,f,l,j,g);os(g);k[h>>2]=k[b>>2];b=k[l>>2]|0;e=k[j>>2]|0;k[g>>2]=k[h>>2];e=Ht(g,f,b,e,c,d)|0;u=a;return e|0}function Bt(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;a=u;u=u+96|0;h=a+8|0;n=a;m=a+71|0;g=a+28|0;l=a+24|0;j=a+16|0;i=a+20|0;o=n;k[o>>2]=37;k[o+4>>2]=0;Lt(n+1|0,30692,0,k[c+4>>2]|0);o=qs()|0;p=h;k[p>>2]=e;k[p+4>>2]=f;e=m+(Ft(m,23,o,n,h)|0)|0;f=Gt(m,e,c)|0;n=Fr(c)|0;k[h>>2]=n;Mt(m,f,e,g,l,j,h);os(h);k[i>>2]=k[b>>2];e=k[l>>2]|0;f=k[j>>2]|0;k[h>>2]=k[i>>2];f=Ht(h,g,e,f,c,d)|0;u=a;return f|0}function Ct(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+176|0;q=v+72|0;m=v+48|0;l=v+32|0;h=v+24|0;f=v+8|0;j=v;n=v+134|0;o=v+68|0;g=v+76|0;t=v+64|0;r=v+60|0;s=v+56|0;i=j;k[i>>2]=37;k[i+4>>2]=0;i=It(j+1|0,35588,k[c+4>>2]|0)|0;k[o>>2]=n;a=qs()|0;if(i){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;a=Ft(n,30,a,j,f)|0}else{p[h>>3]=e;a=Ft(n,30,a,j,h)|0}if((a|0)>29){a=qs()|0;if(i){k[l>>2]=k[c+8>>2];p[l+8>>3]=e;a=Jt(o,a,j,l)|0}else{p[m>>3]=e;a=Jt(o,a,j,m)|0}f=k[o>>2]|0;if(!f){h=k[o>>2]|0;l=h}else{l=f;h=f}}else{l=0;h=k[o>>2]|0}i=h+a|0;j=Gt(h,i,c)|0;if((h|0)!=(n|0)){a=Oq(a<<1)|0;if(!a){g=0;f=0;a=k[o>>2]|0}else{g=a;f=a;a=h}}else{f=0;a=n}o=Fr(c)|0;k[q>>2]=o;Kt(a,j,i,g,t,r,q);os(q);k[s>>2]=k[b>>2];t=k[t>>2]|0;b=k[r>>2]|0;k[q>>2]=k[s>>2];d=Ht(q,g,t,b,c,d)|0;Pq(f);Pq(l);u=v;return d|0}function Dt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+176|0;q=v+72|0;m=v+48|0;l=v+32|0;h=v+24|0;f=v+8|0;j=v;n=v+134|0;o=v+68|0;g=v+76|0;t=v+64|0;r=v+60|0;s=v+56|0;i=j;k[i>>2]=37;k[i+4>>2]=0;i=It(j+1|0,26324,k[c+4>>2]|0)|0;k[o>>2]=n;a=qs()|0;if(i){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;a=Ft(n,30,a,j,f)|0}else{p[h>>3]=e;a=Ft(n,30,a,j,h)|0}if((a|0)>29){a=qs()|0;if(i){k[l>>2]=k[c+8>>2];p[l+8>>3]=e;a=Jt(o,a,j,l)|0}else{p[m>>3]=e;a=Jt(o,a,j,m)|0}f=k[o>>2]|0;if(!f){h=k[o>>2]|0;l=h}else{l=f;h=f}}else{l=0;h=k[o>>2]|0}i=h+a|0;j=Gt(h,i,c)|0;if((h|0)!=(n|0)){a=Oq(a<<1)|0;if(!a){g=0;f=0;a=k[o>>2]|0}else{g=a;f=a;a=h}}else{f=0;a=n}o=Fr(c)|0;k[q>>2]=o;Kt(a,j,i,g,t,r,q);os(q);k[s>>2]=k[b>>2];t=k[t>>2]|0;b=k[r>>2]|0;k[q>>2]=k[s>>2];d=Ht(q,g,t,b,c,d)|0;Pq(f);Pq(l);u=v;return d|0}function Et(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=u;u=u+80|0;l=a;j=a+68|0;f=a+48|0;h=a+8|0;m=a+4|0;i[j>>0]=i[26318]|0;i[j+1>>0]=i[26319]|0;i[j+2>>0]=i[26320]|0;i[j+3>>0]=i[26321]|0;i[j+4>>0]=i[26322]|0;i[j+5>>0]=i[26323]|0;g=qs()|0;k[l>>2]=e;e=Ft(f,20,g,j,l)|0;j=f+e|0;g=Gt(f,j,c)|0;n=Fr(c)|0;k[l>>2]=n;n=ns(l,32620)|0;os(l);Rc[k[(k[n>>2]|0)+32>>2]&7](n,f,j,h)|0;e=h+e|0;k[m>>2]=k[b>>2];k[l>>2]=k[m>>2];e=Ht(l,h,(g|0)==(j|0)?e:h+(g-f)|0,e,c,d)|0;u=a;return e|0}function Ft(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=u;u=u+16|0;g=f;k[g>>2]=e;e=cq(c)|0;c=Vo(a,b,d,g)|0;if(e|0)cq(e)|0;u=f;return c|0}function Gt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch((k[c+4>>2]&176)<<24>>24){case 16:{c=i[a>>0]|0;d=a+1|0;switch(c<<24>>24){case 43:case 45:{a=d;break a}default:{}}if((b-a|0)>1&c<<24>>24==48){switch(i[d>>0]|0){case 88:case 120:break;default:{e=6;break a}}a=a+2|0}else e=6;break}case 32:{a=b;break}default:e=6}while(0);return a|0}function Ht(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 g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;m=n;g=k[a>>2]|0;a:do if(!g)g=0;else{j=b;h=d-j|0;l=e+12|0;e=k[l>>2]|0;e=(e|0)>(h|0)?e-h|0:0;h=c;j=h-j|0;if((j|0)>0?(Sc[k[(k[g>>2]|0)+48>>2]&63](g,b,j)|0)!=(j|0):0){k[a>>2]=0;g=0;break}do if((e|0)>0){k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;LA(m,e,f);if((Sc[k[(k[g>>2]|0)+48>>2]&63](g,(i[m+11>>0]|0)<0?k[m>>2]|0:m,e)|0)==(e|0)){NA(m);break}else{k[a>>2]=0;NA(m);g=0;break a}}while(0);d=d-h|0;if((d|0)>0?(Sc[k[(k[g>>2]|0)+48>>2]&63](g,c,d)|0)!=(d|0):0){k[a>>2]=0;g=0;break}k[l>>2]=0}while(0);u=n;return g|0}function It(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if(c&2048){i[a>>0]=43;a=a+1|0}if(c&1024){i[a>>0]=35;a=a+1|0}g=c&260;d=(c&16384|0)!=0;e=(g|0)==260;if(e)f=0;else{i[a>>0]=46;i[a+1>>0]=42;f=1;a=a+2|0}while(1){c=i[b>>0]|0;if(!(c<<24>>24))break;i[a>>0]=c;b=b+1|0;a=a+1|0}a:do switch(g&511){case 4:{c=d?70:102;break}case 256:{c=d?69:101;break}default:if(e){c=d?65:97;break a}else{c=d?71:103;break a}}while(0);i[a>>0]=c;return f|0}function Jt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;k[f>>2]=d;d=cq(b)|0;b=Hq(a,c,f)|0;if(d|0)cq(d)|0;u=e;return b|0}function Kt(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;w=u;u=u+16|0;s=w;t=ns(g,32620)|0;r=ns(g,32636)|0;Nc[k[(k[r>>2]|0)+20>>2]&63](s,r);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{q=Yc[k[(k[t>>2]|0)+28>>2]&63](t,g)|0;h=k[f>>2]|0;k[f>>2]=h+1;i[h>>0]=q;h=a+1|0;break}default:h=a}q=c;a:do if((q-h|0)>1?(i[h>>0]|0)==48:0){g=h+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:{g=h;v=10;break a}}o=Yc[k[(k[t>>2]|0)+28>>2]&63](t,48)|0;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o;h=h+2|0;p=Yc[k[(k[t>>2]|0)+28>>2]&63](t,i[g>>0]|0)|0;g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=p;g=h;while(1){if(g>>>0>=c>>>0)break a;p=i[g>>0]|0;if(!(_p(p,qs()|0)|0))break a;g=g+1|0}}else{g=h;v=10}while(0);b:do if((v|0)==10)while(1){v=0;if(g>>>0>=c>>>0)break b;p=i[g>>0]|0;if(!(Zp(p,qs()|0)|0))break b;g=g+1|0;v=10}while(0);m=s+11|0;l=i[m>>0]|0;n=s+4|0;o=h;p=a;c:do if((l<<24>>24<0?k[n>>2]|0:l&255)|0){d:do if((h|0)!=(g|0)){a=g;j=h;while(1){a=a+-1|0;if(j>>>0>=a>>>0)break d;l=i[j>>0]|0;i[j>>0]=i[a>>0]|0;i[a>>0]=l;j=j+1|0}}while(0);l=Pc[k[(k[r>>2]|0)+16>>2]&127](r)|0;j=0;a=0;while(1){if(h>>>0>=g>>>0)break;x=i[((i[m>>0]|0)<0?k[s>>2]|0:s)+a>>0]|0;if(x<<24>>24>0&(j|0)==(x<<24>>24|0)){j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=l;j=i[m>>0]|0;a=(a>>>0<((j<<24>>24<0?k[n>>2]|0:j&255)+-1|0)>>>0&1)+a|0;j=0}y=Yc[k[(k[t>>2]|0)+28>>2]&63](t,i[h>>0]|0)|0;x=k[f>>2]|0;k[f>>2]=x+1;i[x>>0]=y;h=h+1|0;j=j+1|0}a=d+(o-p)|0;h=k[f>>2]|0;if((a|0)==(h|0))a=t;else while(1){h=h+-1|0;if(a>>>0>=h>>>0){a=t;break c}y=i[a>>0]|0;i[a>>0]=i[h>>0]|0;i[h>>0]=y;a=a+1|0}}else{Rc[k[(k[t>>2]|0)+32>>2]&7](t,h,g,k[f>>2]|0)|0;k[f>>2]=(k[f>>2]|0)+(g-o);a=t}while(0);while(1){if(g>>>0>=c>>>0)break;h=i[g>>0]|0;g=g+1|0;if(h<<24>>24==46){v=29;break}x=Yc[k[(k[a>>2]|0)+28>>2]&63](t,h)|0;y=k[f>>2]|0;k[f>>2]=y+1;i[y>>0]=x}if((v|0)==29){x=Pc[k[(k[r>>2]|0)+12>>2]&127](r)|0;y=k[f>>2]|0;k[f>>2]=y+1;i[y>>0]=x}Rc[k[(k[t>>2]|0)+32>>2]&7](t,g,c,k[f>>2]|0)|0;y=(k[f>>2]|0)+(q-g)|0;k[f>>2]=y;k[e>>2]=(b|0)==(c|0)?y:d+(b-p)|0;NA(s);u=w;return}function Lt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(d&2048){i[a>>0]=43;a=a+1|0}if(!(d&512))e=a;else{i[a>>0]=35;e=a+1|0}while(1){a=i[b>>0]|0;if(!(a<<24>>24))break;i[e>>0]=a;b=b+1|0;e=e+1|0}switch(d&74){case 64:{a=111;break}case 8:{a=d&16384|0?88:120;break}default:a=c?100:117}i[e>>0]=a;return}function Mt(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+16|0;q=r;o=ns(g,32620)|0;j=ns(g,32636)|0;Nc[k[(k[j>>2]|0)+20>>2]&63](q,j);m=q+11|0;l=i[m>>0]|0;n=q+4|0;p=a;h=c;if((l<<24>>24<0?k[n>>2]|0:l&255)|0){k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{g=Yc[k[(k[o>>2]|0)+28>>2]&63](o,g)|0;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=g;a=a+1|0;break}default:{}}a:do if((h-a|0)>1?(i[a>>0]|0)==48:0){g=a+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:break a}l=Yc[k[(k[o>>2]|0)+28>>2]&63](o,48)|0;h=k[f>>2]|0;k[f>>2]=h+1;i[h>>0]=l;h=Yc[k[(k[o>>2]|0)+28>>2]&63](o,i[g>>0]|0)|0;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=h;a=a+2|0}while(0);b:do if((a|0)!=(c|0)){g=c;h=a;while(1){g=g+-1|0;if(h>>>0>=g>>>0)break b;l=i[h>>0]|0;i[h>>0]=i[g>>0]|0;i[g>>0]=l;h=h+1|0}}while(0);l=Pc[k[(k[j>>2]|0)+16>>2]&127](j)|0;j=a;g=0;h=0;while(1){if(j>>>0>=c>>>0)break;s=i[((i[m>>0]|0)<0?k[q>>2]|0:q)+g>>0]|0;if(s<<24>>24!=0&(h|0)==(s<<24>>24|0)){h=k[f>>2]|0;k[f>>2]=h+1;i[h>>0]=l;h=i[m>>0]|0;g=(g>>>0<((h<<24>>24<0?k[n>>2]|0:h&255)+-1|0)>>>0&1)+g|0;h=0}t=Yc[k[(k[o>>2]|0)+28>>2]&63](o,i[j>>0]|0)|0;s=k[f>>2]|0;k[f>>2]=s+1;i[s>>0]=t;j=j+1|0;h=h+1|0}g=d+(a-p)|0;a=k[f>>2]|0;if((g|0)!=(a|0)){while(1){a=a+-1|0;if(g>>>0>=a>>>0)break;t=i[g>>0]|0;i[g>>0]=i[a>>0]|0;i[a>>0]=t;g=g+1|0}g=k[f>>2]|0}}else{Rc[k[(k[o>>2]|0)+32>>2]&7](o,a,c,d)|0;g=d+(h-p)|0;k[f>>2]=g}k[e>>2]=(b|0)==(c|0)?g:d+(b-p)|0;NA(q);u=r;return}function Nt(a){a=a|0;Ur(a);return}function Ot(a){a=a|0;Ur(a);EA(a);return}function Pt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;l=u;u=u+16|0;j=l+4|0;f=l;if(!(k[c+4>>2]&1)){h=k[(k[a>>2]|0)+24>>2]|0;k[f>>2]=k[b>>2];k[j>>2]=k[f>>2];a=bd[h&31](a,j,c,d,e&1)|0}else{a=Fr(c)|0;k[j>>2]=a;a=ns(j,32660)|0;os(j);c=k[a>>2]|0;if(e)Nc[k[c+24>>2]&63](j,a);else Nc[k[c+28>>2]&63](j,a);g=j+8+3|0;a=i[g>>0]|0;c=k[j>>2]|0;h=j+4|0;e=a<<24>>24<0?c:j;while(1){f=a<<24>>24<0;if((e|0)==((f?c:j)+((f?k[h>>2]|0:a&255)<<2)|0))break;a=k[e>>2]|0;c=k[b>>2]|0;if(c|0){d=c+24|0;f=k[d>>2]|0;if((f|0)==(k[c+28>>2]|0)){f=k[(k[c>>2]|0)+52>>2]|0;a=ur(a)|0;a=Yc[f&63](c,a)|0}else{k[d>>2]=f+4;k[f>>2]=a;a=ur(a)|0}if(Gr(a,tr()|0)|0)k[b>>2]=0}e=e+4|0;a=i[g>>0]|0;c=k[j>>2]|0}a=k[b>>2]|0;aB(j)}u=l;return a|0}function Qt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=u;u=u+128|0;g=a;m=a+122|0;n=a+108|0;f=a+16|0;l=a+12|0;j=a+8|0;h=a+4|0;i[m>>0]=i[26326]|0;i[m+1>>0]=i[26327]|0;i[m+2>>0]=i[26328]|0;i[m+3>>0]=i[26329]|0;i[m+4>>0]=i[26330]|0;i[m+5>>0]=i[26331]|0;Lt(m+1|0,30687,1,k[c+4>>2]|0);o=qs()|0;k[g>>2]=e;e=n+(Ft(n,13,o,m,g)|0)|0;m=Gt(n,e,c)|0;o=Fr(c)|0;k[g>>2]=o;Zt(n,m,e,f,l,j,g);os(g);k[h>>2]=k[b>>2];b=k[l>>2]|0;e=k[j>>2]|0;k[g>>2]=k[h>>2];e=Xt(g,f,b,e,c,d)|0;u=a;return e|0}function Rt(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;a=u;u=u+224|0;h=a+8|0;n=a;m=a+200|0;g=a+28|0;l=a+24|0;j=a+16|0;i=a+20|0;o=n;k[o>>2]=37;k[o+4>>2]=0;Lt(n+1|0,30692,1,k[c+4>>2]|0);o=qs()|0;p=h;k[p>>2]=e;k[p+4>>2]=f;e=m+(Ft(m,23,o,n,h)|0)|0;f=Gt(m,e,c)|0;n=Fr(c)|0;k[h>>2]=n;Zt(m,f,e,g,l,j,h);os(h);k[i>>2]=k[b>>2];e=k[l>>2]|0;f=k[j>>2]|0;k[h>>2]=k[i>>2];f=Xt(h,g,e,f,c,d)|0;u=a;return f|0}function St(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=u;u=u+128|0;g=a;m=a+112|0;n=a+100|0;f=a+16|0;l=a+12|0;j=a+8|0;h=a+4|0;i[m>>0]=i[26326]|0;i[m+1>>0]=i[26327]|0;i[m+2>>0]=i[26328]|0;i[m+3>>0]=i[26329]|0;i[m+4>>0]=i[26330]|0;i[m+5>>0]=i[26331]|0;Lt(m+1|0,30687,0,k[c+4>>2]|0);o=qs()|0;k[g>>2]=e;e=n+(Ft(n,12,o,m,g)|0)|0;m=Gt(n,e,c)|0;o=Fr(c)|0;k[g>>2]=o;Zt(n,m,e,f,l,j,g);os(g);k[h>>2]=k[b>>2];b=k[l>>2]|0;e=k[j>>2]|0;k[g>>2]=k[h>>2];e=Xt(g,f,b,e,c,d)|0;u=a;return e|0}function Tt(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;a=u;u=u+224|0;h=a+8|0;n=a;m=a+200|0;g=a+28|0;l=a+24|0;j=a+16|0;i=a+20|0;o=n;k[o>>2]=37;k[o+4>>2]=0;Lt(n+1|0,30692,0,k[c+4>>2]|0);o=qs()|0;p=h;k[p>>2]=e;k[p+4>>2]=f;e=m+(Ft(m,23,o,n,h)|0)|0;f=Gt(m,e,c)|0;n=Fr(c)|0;k[h>>2]=n;Zt(m,f,e,g,l,j,h);os(h);k[i>>2]=k[b>>2];e=k[l>>2]|0;f=k[j>>2]|0;k[h>>2]=k[i>>2];f=Xt(h,g,e,f,c,d)|0;u=a;return f|0}function Ut(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+336|0;q=v+300|0;m=v+48|0;l=v+32|0;h=v+24|0;f=v+8|0;j=v;n=v+304|0;o=v+296|0;g=v+68|0;t=v+64|0;r=v+60|0;s=v+56|0;i=j;k[i>>2]=37;k[i+4>>2]=0;i=It(j+1|0,35588,k[c+4>>2]|0)|0;k[o>>2]=n;a=qs()|0;if(i){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;a=Ft(n,30,a,j,f)|0}else{p[h>>3]=e;a=Ft(n,30,a,j,h)|0}if((a|0)>29){a=qs()|0;if(i){k[l>>2]=k[c+8>>2];p[l+8>>3]=e;a=Jt(o,a,j,l)|0}else{p[m>>3]=e;a=Jt(o,a,j,m)|0}f=k[o>>2]|0;if(!f){h=k[o>>2]|0;m=h}else{m=f;h=f}}else{m=0;h=k[o>>2]|0}j=h+a|0;l=Gt(h,j,c)|0;if((h|0)!=(n|0)){f=Oq(a<<3)|0;if(!f){g=f;i=1;a=k[o>>2]|0;f=0}else{g=f;i=0;a=h}}else{i=1;a=n;f=0}o=Fr(c)|0;k[q>>2]=o;Yt(a,l,j,g,t,r,q);os(q);k[s>>2]=k[b>>2];t=k[t>>2]|0;a=k[r>>2]|0;k[q>>2]=k[s>>2];a=Xt(q,g,t,a,c,d)|0;k[b>>2]=a;if(!i)Pq(f);Pq(m);u=v;return a|0}function Vt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+336|0;q=v+300|0;m=v+48|0;l=v+32|0;h=v+24|0;f=v+8|0;j=v;n=v+304|0;o=v+296|0;g=v+68|0;t=v+64|0;r=v+60|0;s=v+56|0;i=j;k[i>>2]=37;k[i+4>>2]=0;i=It(j+1|0,26324,k[c+4>>2]|0)|0;k[o>>2]=n;a=qs()|0;if(i){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;a=Ft(n,30,a,j,f)|0}else{p[h>>3]=e;a=Ft(n,30,a,j,h)|0}if((a|0)>29){a=qs()|0;if(i){k[l>>2]=k[c+8>>2];p[l+8>>3]=e;a=Jt(o,a,j,l)|0}else{p[m>>3]=e;a=Jt(o,a,j,m)|0}f=k[o>>2]|0;if(!f){h=k[o>>2]|0;m=h}else{m=f;h=f}}else{m=0;h=k[o>>2]|0}j=h+a|0;l=Gt(h,j,c)|0;if((h|0)!=(n|0)){f=Oq(a<<3)|0;if(!f){g=f;i=1;a=k[o>>2]|0;f=0}else{g=f;i=0;a=h}}else{i=1;a=n;f=0}o=Fr(c)|0;k[q>>2]=o;Yt(a,l,j,g,t,r,q);os(q);k[s>>2]=k[b>>2];t=k[t>>2]|0;a=k[r>>2]|0;k[q>>2]=k[s>>2];a=Xt(q,g,t,a,c,d)|0;k[b>>2]=a;if(!i)Pq(f);Pq(m);u=v;return a|0}function Wt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=u;u=u+192|0;l=a;j=a+176|0;f=a+156|0;h=a+4|0;m=a+152|0;i[j>>0]=i[26318]|0;i[j+1>>0]=i[26319]|0;i[j+2>>0]=i[26320]|0;i[j+3>>0]=i[26321]|0;i[j+4>>0]=i[26322]|0;i[j+5>>0]=i[26323]|0;g=qs()|0;k[l>>2]=e;e=Ft(f,20,g,j,l)|0;j=f+e|0;g=Gt(f,j,c)|0;n=Fr(c)|0;k[l>>2]=n;n=ns(l,32652)|0;os(l);Rc[k[(k[n>>2]|0)+48>>2]&7](n,f,j,h)|0;e=h+(e<<2)|0;k[m>>2]=k[b>>2];k[l>>2]=k[m>>2];e=Xt(l,h,(g|0)==(j|0)?e:h+(g-f<<2)|0,e,c,d)|0;u=a;return e|0}function Xt(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0;n=u;u=u+16|0;m=n;g=k[a>>2]|0;a:do if(!g)g=0;else{o=b;h=d-o>>2;l=e+12|0;e=k[l>>2]|0;e=(e|0)>(h|0)?e-h|0:0;h=c;o=h-o|0;j=o>>2;if((o|0)>0?(Sc[k[(k[g>>2]|0)+48>>2]&63](g,b,j)|0)!=(j|0):0){k[a>>2]=0;g=0;break}do if((e|0)>0){k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;_A(m,e,f);if((Sc[k[(k[g>>2]|0)+48>>2]&63](g,(i[m+8+3>>0]|0)<0?k[m>>2]|0:m,e)|0)==(e|0)){aB(m);break}else{k[a>>2]=0;aB(m);g=0;break a}}while(0);o=d-h|0;d=o>>2;if((o|0)>0?(Sc[k[(k[g>>2]|0)+48>>2]&63](g,c,d)|0)!=(d|0):0){k[a>>2]=0;g=0;break}k[l>>2]=0}while(0);u=n;return g|0}function Yt(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;y=u;u=u+16|0;v=y;w=ns(g,32652)|0;s=ns(g,32660)|0;Nc[k[(k[s>>2]|0)+20>>2]&63](v,s);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{t=Yc[k[(k[w>>2]|0)+44>>2]&63](w,g)|0;g=k[f>>2]|0;k[f>>2]=g+4;k[g>>2]=t;g=a+1|0;break}default:g=a}t=c;a:do if((t-g|0)>1?(i[g>>0]|0)==48:0){h=g+1|0;switch(i[h>>0]|0){case 88:case 120:break;default:{h=g;x=10;break a}}q=Yc[k[(k[w>>2]|0)+44>>2]&63](w,48)|0;r=k[f>>2]|0;k[f>>2]=r+4;k[r>>2]=q;g=g+2|0;r=Yc[k[(k[w>>2]|0)+44>>2]&63](w,i[h>>0]|0)|0;h=k[f>>2]|0;k[f>>2]=h+4;k[h>>2]=r;h=g;while(1){if(h>>>0>=c>>>0)break a;r=i[h>>0]|0;if(!(_p(r,qs()|0)|0))break a;h=h+1|0}}else{h=g;x=10}while(0);b:do if((x|0)==10)while(1){x=0;if(h>>>0>=c>>>0)break b;r=i[h>>0]|0;if(!(Zp(r,qs()|0)|0))break b;h=h+1|0;x=10}while(0);o=v+11|0;n=i[o>>0]|0;p=v+4|0;q=g;r=a;c:do if((n<<24>>24<0?k[p>>2]|0:n&255)|0){d:do if((g|0)!=(h|0)){a=h;j=g;while(1){a=a+-1|0;if(j>>>0>=a>>>0)break d;n=i[j>>0]|0;i[j>>0]=i[a>>0]|0;i[a>>0]=n;j=j+1|0}}while(0);n=Pc[k[(k[s>>2]|0)+16>>2]&127](s)|0;a=0;j=0;while(1){if(g>>>0>=h>>>0)break;l=i[o>>0]|0;m=l<<24>>24<0;z=i[(m?k[v>>2]|0:v)+a>>0]|0;if(z<<24>>24>0&(j|0)==(z<<24>>24|0)){j=k[f>>2]|0;k[f>>2]=j+4;k[j>>2]=n;a=(a>>>0<((m?k[p>>2]|0:l&255)+-1|0)>>>0&1)+a|0;j=0}m=Yc[k[(k[w>>2]|0)+44>>2]&63](w,i[g>>0]|0)|0;z=k[f>>2]|0;k[f>>2]=z+4;k[z>>2]=m;g=g+1|0;j=j+1|0}g=d+(q-r<<2)|0;j=k[f>>2]|0;if((g|0)==(j|0))a=w;else{a=j;while(1){a=a+-4|0;if(g>>>0>=a>>>0){a=w;g=j;break c}z=k[g>>2]|0;k[g>>2]=k[a>>2];k[a>>2]=z;g=g+4|0}}}else{Rc[k[(k[w>>2]|0)+48>>2]&7](w,g,h,k[f>>2]|0)|0;g=(k[f>>2]|0)+(h-q<<2)|0;k[f>>2]=g;a=w}while(0);while(1){if(h>>>0>=c>>>0)break;g=i[h>>0]|0;h=h+1|0;if(g<<24>>24==46){x=29;break}q=Yc[k[(k[a>>2]|0)+44>>2]&63](w,g)|0;z=k[f>>2]|0;g=z+4|0;k[f>>2]=g;k[z>>2]=q}if((x|0)==29){x=Pc[k[(k[s>>2]|0)+12>>2]&127](s)|0;z=k[f>>2]|0;g=z+4|0;k[f>>2]=g;k[z>>2]=x}Rc[k[(k[w>>2]|0)+48>>2]&7](w,h,c,g)|0;z=(k[f>>2]|0)+(t-h<<2)|0;k[f>>2]=z;k[e>>2]=(b|0)==(c|0)?z:d+(b-r<<2)|0;NA(v);u=y;return}function Zt(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;t=u;u=u+16|0;s=t;q=ns(g,32652)|0;j=ns(g,32660)|0;Nc[k[(k[j>>2]|0)+20>>2]&63](s,j);o=s+11|0;n=i[o>>0]|0;p=s+4|0;r=a;h=c;if((n<<24>>24<0?k[p>>2]|0:n&255)|0){k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{m=Yc[k[(k[q>>2]|0)+44>>2]&63](q,g)|0;n=k[f>>2]|0;k[f>>2]=n+4;k[n>>2]=m;a=a+1|0;break}default:{}}a:do if((h-a|0)>1?(i[a>>0]|0)==48:0){g=a+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:break a}n=Yc[k[(k[q>>2]|0)+44>>2]&63](q,48)|0;m=k[f>>2]|0;k[f>>2]=m+4;k[m>>2]=n;m=Yc[k[(k[q>>2]|0)+44>>2]&63](q,i[g>>0]|0)|0;n=k[f>>2]|0;k[f>>2]=n+4;k[n>>2]=m;a=a+2|0}while(0);b:do if((a|0)!=(c|0)){g=c;h=a;while(1){g=g+-1|0;if(h>>>0>=g>>>0)break b;n=i[h>>0]|0;i[h>>0]=i[g>>0]|0;i[g>>0]=n;h=h+1|0}}while(0);n=Pc[k[(k[j>>2]|0)+16>>2]&127](j)|0;m=a;g=0;h=0;while(1){if(m>>>0>=c>>>0)break;j=i[o>>0]|0;l=j<<24>>24<0;v=i[(l?k[s>>2]|0:s)+g>>0]|0;if(v<<24>>24!=0&(h|0)==(v<<24>>24|0)){h=k[f>>2]|0;k[f>>2]=h+4;k[h>>2]=n;g=(g>>>0<((l?k[p>>2]|0:j&255)+-1|0)>>>0&1)+g|0;h=0}l=Yc[k[(k[q>>2]|0)+44>>2]&63](q,i[m>>0]|0)|0;v=k[f>>2]|0;k[f>>2]=v+4;k[v>>2]=l;m=m+1|0;h=h+1|0}g=d+(a-r<<2)|0;a=k[f>>2]|0;if((g|0)!=(a|0)){while(1){a=a+-4|0;if(g>>>0>=a>>>0)break;v=k[g>>2]|0;k[g>>2]=k[a>>2];k[a>>2]=v;g=g+4|0}g=k[f>>2]|0}}else{Rc[k[(k[q>>2]|0)+48>>2]&7](q,a,c,d)|0;g=d+(h-r<<2)|0;k[f>>2]=g}k[e>>2]=(b|0)==(c|0)?g:d+(b-r<<2)|0;NA(s);u=t;return}function _t(a){a=a|0;Ur(a);return}function $t(a){a=a|0;Ur(a);EA(a);return}function au(a){a=a|0;return 2}function bu(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=wu(a,i,h,d,e,f,26849,26857)|0;u=g;return f|0}function cu(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0;g=u;u=u+16|0;h=g+12|0;j=g+8|0;m=g+4|0;l=g;n=a+8|0;n=Pc[k[(k[n>>2]|0)+20>>2]&127](n)|0;k[m>>2]=k[b>>2];k[l>>2]=k[c>>2];c=i[n+11>>0]|0;o=c<<24>>24<0;b=o?k[n>>2]|0:n;c=b+(o?k[n+4>>2]|0:c&255)|0;k[j>>2]=k[m>>2];k[h>>2]=k[l>>2];f=wu(a,j,h,d,e,f,b,c)|0;u=g;return f|0}function du(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32620)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];uu(a,f+24|0,b,h,e,d);u=g;return k[b>>2]|0}function eu(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32620)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];vu(a,f+16|0,b,h,e,d);u=g;return k[b>>2]|0}function fu(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32620)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];Hu(a,f+20|0,b,h,e,d);u=g;return k[b>>2]|0}function gu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;X=u;u=u+144|0;j=X+128|0;h=X+112|0;V=X+124|0;W=X+120|0;l=X+116|0;m=X+108|0;n=X+104|0;o=X+100|0;p=X+96|0;q=X+92|0;r=X+88|0;s=X+84|0;t=X+80|0;v=X+76|0;w=X+72|0;x=X+68|0;y=X+64|0;z=X+60|0;A=X+56|0;B=X+52|0;C=X+48|0;D=X+44|0;E=X+40|0;F=X+36|0;G=X+32|0;H=X+28|0;I=X+24|0;J=X+20|0;K=X+16|0;L=X+12|0;M=X+8|0;N=X+4|0;O=X;k[e>>2]=0;P=Fr(d)|0;k[j>>2]=P;P=ns(j,32620)|0;os(j);Q=f+8|0;R=f+20|0;S=f+16|0;T=f+24|0;U=a+8|0;do switch(g<<24>>24|0){case 65:case 97:{k[V>>2]=k[c>>2];k[j>>2]=k[V>>2];uu(a,T,b,j,e,P);Y=26;break}case 104:case 66:case 98:{k[W>>2]=k[c>>2];k[j>>2]=k[W>>2];vu(a,S,b,j,e,P);Y=26;break}case 99:{W=Pc[k[(k[U>>2]|0)+12>>2]&127](U)|0;k[l>>2]=k[b>>2];k[m>>2]=k[c>>2];Y=i[W+11>>0]|0;c=Y<<24>>24<0;g=c?k[W>>2]|0:W;Y=g+(c?k[W+4>>2]|0:Y&255)|0;k[h>>2]=k[l>>2];k[j>>2]=k[m>>2];Y=wu(a,h,j,d,e,f,g,Y)|0;k[b>>2]=Y;Y=26;break}case 101:case 100:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];xu(a,f+12|0,b,j,e,P);Y=26;break}case 68:{k[o>>2]=k[b>>2];k[p>>2]=k[c>>2];k[h>>2]=k[o>>2];k[j>>2]=k[p>>2];Y=wu(a,h,j,d,e,f,26809,26817)|0;k[b>>2]=Y;Y=26;break}case 70:{k[q>>2]=k[b>>2];k[r>>2]=k[c>>2];k[h>>2]=k[q>>2];k[j>>2]=k[r>>2];Y=wu(a,h,j,d,e,f,26817,26825)|0;k[b>>2]=Y;Y=26;break}case 72:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];yu(a,Q,b,j,e,P);Y=26;break}case 73:{k[t>>2]=k[c>>2];k[j>>2]=k[t>>2];zu(a,Q,b,j,e,P);Y=26;break}case 106:{k[v>>2]=k[c>>2];k[j>>2]=k[v>>2];Au(a,f+28|0,b,j,e,P);Y=26;break}case 109:{k[w>>2]=k[c>>2];k[j>>2]=k[w>>2];Bu(a,S,b,j,e,P);Y=26;break}case 77:{k[x>>2]=k[c>>2];k[j>>2]=k[x>>2];Cu(a,f+4|0,b,j,e,P);Y=26;break}case 116:case 110:{k[y>>2]=k[c>>2];k[j>>2]=k[y>>2];Du(a,b,j,e,P);Y=26;break}case 112:{k[z>>2]=k[c>>2];k[j>>2]=k[z>>2];Eu(a,Q,b,j,e,P);Y=26;break}case 114:{k[A>>2]=k[b>>2];k[B>>2]=k[c>>2];k[h>>2]=k[A>>2];k[j>>2]=k[B>>2];Y=wu(a,h,j,d,e,f,26825,26836)|0;k[b>>2]=Y;Y=26;break}case 82:{k[C>>2]=k[b>>2];k[D>>2]=k[c>>2];k[h>>2]=k[C>>2];k[j>>2]=k[D>>2];Y=wu(a,h,j,d,e,f,26836,26841)|0;k[b>>2]=Y;Y=26;break}case 83:{k[E>>2]=k[c>>2];k[j>>2]=k[E>>2];Fu(a,f,b,j,e,P);Y=26;break}case 84:{k[F>>2]=k[b>>2];k[G>>2]=k[c>>2];k[h>>2]=k[F>>2];k[j>>2]=k[G>>2];Y=wu(a,h,j,d,e,f,26841,26849)|0;k[b>>2]=Y;Y=26;break}case 119:{k[H>>2]=k[c>>2];k[j>>2]=k[H>>2];Gu(a,T,b,j,e,P);Y=26;break}case 120:{g=k[(k[a>>2]|0)+20>>2]|0;k[I>>2]=k[b>>2];k[J>>2]=k[c>>2];k[h>>2]=k[I>>2];k[j>>2]=k[J>>2];h=Oc[g&63](a,h,j,d,e,f)|0;break}case 88:{W=Pc[k[(k[U>>2]|0)+24>>2]&127](U)|0;k[K>>2]=k[b>>2];k[L>>2]=k[c>>2];Y=i[W+11>>0]|0;c=Y<<24>>24<0;g=c?k[W>>2]|0:W;Y=g+(c?k[W+4>>2]|0:Y&255)|0;k[h>>2]=k[K>>2];k[j>>2]=k[L>>2];Y=wu(a,h,j,d,e,f,g,Y)|0;k[b>>2]=Y;Y=26;break}case 121:{k[M>>2]=k[c>>2];k[j>>2]=k[M>>2];Hu(a,R,b,j,e,P);Y=26;break}case 89:{k[N>>2]=k[c>>2];k[j>>2]=k[N>>2];Iu(a,R,b,j,e,P);Y=26;break}case 37:{k[O>>2]=k[c>>2];k[j>>2]=k[O>>2];Ju(a,b,j,e,P);Y=26;break}default:{k[e>>2]=k[e>>2]|4;Y=26}}while(0);if((Y|0)==26)h=k[b>>2]|0;u=X;return h|0}function hu(a){a=a|0;if((i[31392]|0)==0?aF(31392)|0:0){su();k[8373]=33324}return k[8373]|0}function iu(a){a=a|0;if((i[31376]|0)==0?aF(31376)|0:0){qu();k[8330]=33032}return k[8330]|0}function ju(a){a=a|0;if((i[31360]|0)==0?aF(31360)|0:0){ou();k[8257]=32740}return k[8257]|0}function ku(a){a=a|0;if((i[31352]|0)==0?aF(31352)|0:0){k[8182]=0;k[8183]=0;k[8184]=0;KA(32728,26567,Br(26567)|0);cb(99,32728,x|0)|0}return 32728}function lu(a){a=a|0;if((i[31344]|0)==0?aF(31344)|0:0){k[8179]=0;k[8180]=0;k[8181]=0;KA(32716,26555,Br(26555)|0);cb(99,32716,x|0)|0}return 32716}function mu(a){a=a|0;if((i[31336]|0)==0?aF(31336)|0:0){k[8176]=0;k[8177]=0;k[8178]=0;KA(32704,26546,Br(26546)|0);cb(99,32704,x|0)|0}return 32704}function nu(a){a=a|0;if((i[31328]|0)==0?aF(31328)|0:0){k[8173]=0;k[8174]=0;k[8175]=0;KA(32692,26537,Br(26537)|0);cb(99,32692,x|0)|0}return 32692}function ou(){var a=0,b=0;if((i[31368]|0)==0?aF(31368)|0:0){b=32740;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=33028);cb(100,0,x|0)|0}TA(32740,26588)|0;TA(32752,26591)|0;return}function pu(a){a=a|0;a=33028;do{a=a+-12|0;NA(a)}while((a|0)!=32740);return}function qu(){var a=0,b=0;if((i[31384]|0)==0?aF(31384)|0:0){b=33032;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=33320);cb(101,0,x|0)|0}TA(33032,26594)|0;TA(33044,26602)|0;TA(33056,26611)|0;TA(33068,26617)|0;TA(33080,26623)|0;TA(33092,26627)|0;TA(33104,26632)|0;TA(33116,26637)|0;TA(33128,26644)|0;TA(33140,26654)|0;TA(33152,26662)|0;TA(33164,26671)|0;TA(33176,26680)|0;TA(33188,26684)|0;TA(33200,26688)|0;TA(33212,26692)|0;TA(33224,26623)|0;TA(33236,26696)|0;TA(33248,26700)|0;TA(33260,26704)|0;TA(33272,26708)|0;TA(33284,26712)|0;TA(33296,26716)|0;TA(33308,26720)|0;return}function ru(a){a=a|0;a=33320;do{a=a+-12|0;NA(a)}while((a|0)!=33032);return}function su(){var a=0,b=0;if((i[31400]|0)==0?aF(31400)|0:0){b=33324;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=33492);cb(102,0,x|0)|0}TA(33324,26724)|0;TA(33336,26731)|0;TA(33348,26738)|0;TA(33360,26746)|0;TA(33372,26756)|0;TA(33384,26765)|0;TA(33396,26772)|0;TA(33408,26781)|0;TA(33420,26785)|0;TA(33432,26789)|0;TA(33444,26793)|0;TA(33456,26797)|0;TA(33468,26801)|0;TA(33480,26805)|0;return}function tu(a){a=a|0;a=33492;do{a=a+-12|0;NA(a)}while((a|0)!=33324);return}function uu(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;a=a+8|0;a=Pc[k[k[a>>2]>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];a=(Vs(c,h,a,a+168|0,f,e,0)|0)-a|0;if((a|0)<168)k[b>>2]=((a|0)/12|0|0)%7|0;u=g;return}function vu(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;a=a+8|0;a=Pc[k[(k[a>>2]|0)+4>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];a=(Vs(c,h,a,a+288|0,f,e,0)|0)-a|0;if((a|0)<288)k[b>>2]=((a|0)/12|0|0)%12|0;u=g;return}function wu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+16|0;t=B+12|0;s=B+8|0;y=B+4|0;z=B;v=Fr(d)|0;k[t>>2]=v;v=ns(t,32620)|0;os(t);k[e>>2]=0;w=v+8|0;l=0;a:while(1){r=(g|0)!=(h|0);m=l;while(1){l=k[b>>2]|0;if(!(r&(m|0)==0))break a;n=l;if(l){m=k[l+12>>2]|0;if((m|0)==(k[l+16>>2]|0))m=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else m=qr(i[m>>0]|0)|0;if(Er(m,pr()|0)|0){k[b>>2]=0;l=0;p=1;q=0}else{p=0;q=n}}else{l=0;p=1;q=n}o=k[c>>2]|0;m=o;do if(o){n=k[o+12>>2]|0;if((n|0)==(k[o+16>>2]|0))n=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else n=qr(i[n>>0]|0)|0;if(!(Er(n,pr()|0)|0))if(p)break;else{A=61;break a}else{k[c>>2]=0;m=0;A=16;break}}else A=16;while(0);if((A|0)==16){A=0;if(p){A=61;break a}else o=0}if((Sc[k[(k[v>>2]|0)+36>>2]&63](v,i[g>>0]|0,0)|0)<<24>>24==37){A=19;break}m=i[g>>0]|0;if(m<<24>>24>-1?(x=k[w>>2]|0,j[x+(m<<24>>24<<1)>>1]&8192):0){A=27;break}n=l+12|0;m=k[n>>2]|0;o=l+16|0;if((m|0)==(k[o>>2]|0))m=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else m=qr(i[m>>0]|0)|0;q=Yc[k[(k[v>>2]|0)+12>>2]&63](v,m&255)|0;if(q<<24>>24==(Yc[k[(k[v>>2]|0)+12>>2]&63](v,i[g>>0]|0)|0)<<24>>24){A=57;break}k[e>>2]=4;m=4}b:do if((A|0)==19){A=0;p=g+1|0;if((p|0)==(h|0)){A=61;break a}n=Sc[k[(k[v>>2]|0)+36>>2]&63](v,i[p>>0]|0,0)|0;switch(n<<24>>24){case 48:case 69:{g=g+2|0;if((g|0)==(h|0)){A=61;break a}o=n;l=Sc[k[(k[v>>2]|0)+36>>2]&63](v,i[g>>0]|0,0)|0;g=p;break}default:{o=0;l=n}}r=k[(k[a>>2]|0)+36>>2]|0;k[y>>2]=q;k[z>>2]=m;k[s>>2]=k[y>>2];k[t>>2]=k[z>>2];r=Xc[r&15](a,s,t,d,e,f,l,o)|0;k[b>>2]=r;g=g+2|0}else if((A|0)==27){while(1){A=0;g=g+1|0;if((g|0)==(h|0)){g=h;break}m=i[g>>0]|0;if(m<<24>>24<=-1)break;if(!(j[x+(m<<24>>24<<1)>>1]&8192))break;else A=27}m=o;while(1){if(l){n=k[l+12>>2]|0;if((n|0)==(k[l+16>>2]|0))n=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else n=qr(i[n>>0]|0)|0;if(Er(n,pr()|0)|0){k[b>>2]=0;p=1;l=0}else p=0}else{p=1;l=0}do if(o){n=k[o+12>>2]|0;if((n|0)==(k[o+16>>2]|0))n=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else n=qr(i[n>>0]|0)|0;if(!(Er(n,pr()|0)|0))if(p^(m|0)==0){q=m;o=m;break}else break b;else{k[c>>2]=0;m=0;A=43;break}}else A=43;while(0);if((A|0)==43){A=0;if(p)break b;else{q=m;o=0}}n=l+12|0;m=k[n>>2]|0;p=l+16|0;if((m|0)==(k[p>>2]|0))m=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else m=qr(i[m>>0]|0)|0;if((m&255)<<24>>24<=-1)break b;if(!(j[(k[w>>2]|0)+(m<<24>>24<<1)>>1]&8192))break b;m=k[n>>2]|0;if((m|0)==(k[p>>2]|0)){Pc[k[(k[l>>2]|0)+40>>2]&127](l)|0;m=q;continue}else{k[n>>2]=m+1;qr(i[m>>0]|0)|0;m=q;continue}}}else if((A|0)==57){A=0;g=g+1|0;m=k[n>>2]|0;if((m|0)==(k[o>>2]|0)){Pc[k[(k[l>>2]|0)+40>>2]&127](l)|0;break}else{k[n>>2]=m+1;qr(i[m>>0]|0)|0;break}}while(0);l=k[e>>2]|0}if((A|0)==61)k[e>>2]=4;if(l){g=k[l+12>>2]|0;if((g|0)==(k[l+16>>2]|0))g=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else g=qr(i[g>>0]|0)|0;if(Er(g,pr()|0)|0){k[b>>2]=0;l=0;n=1}else n=0}else{l=0;n=1}g=k[c>>2]|0;do if(g){m=k[g+12>>2]|0;if((m|0)==(k[g+16>>2]|0))g=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=qr(i[m>>0]|0)|0;if(!(Er(g,pr()|0)|0))if(n)break;else{A=76;break}else{k[c>>2]=0;A=74;break}}else A=74;while(0);if((A|0)==74?n:0)A=76;if((A|0)==76)k[e>>2]=k[e>>2]|2;u=B;return l|0}function xu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<31&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function yu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<24&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function zu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<12&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function Au(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,3)|0;c=k[e>>2]|0;if((a|0)<366&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function Bu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<13&(c&4|0)==0)k[b>>2]=a+-1;else k[e>>2]=c|4;u=g;return}function Cu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<60&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function Du(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=e+8|0;a:while(1){a=k[b>>2]|0;do if(a){e=k[a+12>>2]|0;if((e|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[e>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}else f=1;while(0);e=k[c>>2]|0;do if(e){a=k[e+12>>2]|0;if((a|0)==(k[e+16>>2]|0))a=Pc[k[(k[e>>2]|0)+36>>2]&127](e)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(f){f=e;break}else{f=e;break a}else{k[c>>2]=0;h=15;break}}else h=15;while(0);if((h|0)==15){h=0;if(f){f=0;break}else f=0}a=k[b>>2]|0;e=k[a+12>>2]|0;if((e|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[e>>0]|0)|0;if((a&255)<<24>>24<=-1)break;if(!(j[(k[g>>2]|0)+(a<<24>>24<<1)>>1]&8192))break;a=k[b>>2]|0;e=a+12|0;f=k[e>>2]|0;if((f|0)==(k[a+16>>2]|0)){Pc[k[(k[a>>2]|0)+40>>2]&127](a)|0;continue}else{k[e>>2]=f+1;qr(i[f>>0]|0)|0;continue}}a=k[b>>2]|0;do if(a){e=k[a+12>>2]|0;if((e|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[e>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;e=1;break}else{e=(k[b>>2]|0)==0;break}}else e=1;while(0);do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(e)break;else{h=40;break}else{k[c>>2]=0;h=38;break}}else h=38;while(0);if((h|0)==38?e:0)h=40;if((h|0)==40)k[d>>2]=k[d>>2]|2;return}function Eu(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 g=0,h=0,j=0,l=0,m=0;m=u;u=u+16|0;j=m+4|0;l=m;h=a+8|0;h=Pc[k[(k[h>>2]|0)+8>>2]&127](h)|0;a=i[h+11>>0]|0;if(a<<24>>24<0)g=k[h+4>>2]|0;else g=a&255;a=i[h+12+11>>0]|0;if(a<<24>>24<0)a=k[h+16>>2]|0;else a=a&255;do if((g|0)!=(0-a|0)){k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];a=(Vs(c,j,h,h+24|0,f,e,0)|0)-h|0;g=k[b>>2]|0;if((g|0)==12&(a|0)==0){k[b>>2]=0;break}if((g|0)<12&(a|0)==12)k[b>>2]=g+12}else k[e>>2]=k[e>>2]|4;while(0);u=m;return}function Fu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<61&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function Gu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,1)|0;c=k[e>>2]|0;if((a|0)<7&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function Hu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,4)|0;if(!(k[e>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;k[b>>2]=a+-1900}u=g;return}function Iu(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=Ku(c,a,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=a+-1900;u=g;return}function Ju(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[f>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;g=1;break}else{g=(k[b>>2]|0)==0;break}}else g=1;while(0);f=k[c>>2]|0;do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(g){h=f;j=16;break}else{a=6;j=38;break}else{k[c>>2]=0;j=14;break}}else j=14;while(0);if((j|0)==14)if(g){a=6;j=38}else{h=0;j=16}a:do if((j|0)==16){a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[f>>0]|0)|0;if((Sc[k[(k[e>>2]|0)+36>>2]&63](e,a&255,0)|0)<<24>>24==37){a=k[b>>2]|0;f=a+12|0;g=k[f>>2]|0;if((g|0)==(k[a+16>>2]|0))Pc[k[(k[a>>2]|0)+40>>2]&127](a)|0;else{k[f>>2]=g+1;qr(i[g>>0]|0)|0}a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[f>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}else f=1;while(0);do if(h|0){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(f)break a;else{a=2;j=38;break a}else{k[c>>2]=0;break}}while(0);if(f){a=2;j=38}}else{a=4;j=38}}while(0);if((j|0)==38)k[d>>2]=k[d>>2]|a;return}function Ku(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=k[a>>2]|0;do if(f){g=k[f+12>>2]|0;if((g|0)==(k[f+16>>2]|0))f=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=qr(i[g>>0]|0)|0;if(Er(f,pr()|0)|0){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);g=k[b>>2]|0;do if(g){f=k[g+12>>2]|0;if((f|0)==(k[g+16>>2]|0))f=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else f=qr(i[f>>0]|0)|0;if(!(Er(f,pr()|0)|0))if(h){s=17;break}else{s=16;break}else{k[b>>2]=0;s=14;break}}else s=14;while(0);if((s|0)==14)if(h)s=16;else{g=0;s=17}a:do if((s|0)==16){k[c>>2]=k[c>>2]|6;f=0}else if((s|0)==17){f=k[a>>2]|0;h=k[f+12>>2]|0;if((h|0)==(k[f+16>>2]|0))f=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=qr(i[h>>0]|0)|0;h=f&255;if(h<<24>>24>-1?(r=d+8|0,j[(k[r>>2]|0)+(f<<24>>24<<1)>>1]&2048):0){f=(Sc[k[(k[d>>2]|0)+36>>2]&63](d,h,0)|0)<<24>>24;h=k[a>>2]|0;l=h+12|0;m=k[l>>2]|0;if((m|0)==(k[h+16>>2]|0)){Pc[k[(k[h>>2]|0)+40>>2]&127](h)|0;n=g;l=g}else{k[l>>2]=m+1;qr(i[m>>0]|0)|0;n=g;l=g}while(1){f=f+-48|0;q=e+-1|0;g=k[a>>2]|0;do if(g){h=k[g+12>>2]|0;if((h|0)==(k[g+16>>2]|0))g=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=qr(i[h>>0]|0)|0;if(Er(g,pr()|0)|0){k[a>>2]=0;m=1;break}else{m=(k[a>>2]|0)==0;break}}else m=1;while(0);do if(l){g=k[l+12>>2]|0;if((g|0)==(k[l+16>>2]|0))g=Pc[k[(k[l>>2]|0)+36>>2]&127](l)|0;else g=qr(i[g>>0]|0)|0;if(Er(g,pr()|0)|0){k[b>>2]=0;p=0;g=1;o=0;break}else{p=n;g=(n|0)==0;o=n;break}}else{p=n;g=1;o=0}while(0);h=k[a>>2]|0;if(!((e|0)>1&(m^g)))break;g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=qr(i[g>>0]|0)|0;h=g&255;if(h<<24>>24<=-1)break a;if(!(j[(k[r>>2]|0)+(g<<24>>24<<1)>>1]&2048))break a;f=((Sc[k[(k[d>>2]|0)+36>>2]&63](d,h,0)|0)<<24>>24)+(f*10|0)|0;g=k[a>>2]|0;h=g+12|0;l=k[h>>2]|0;if((l|0)==(k[g+16>>2]|0)){Pc[k[(k[g>>2]|0)+40>>2]&127](g)|0;e=q;n=p;l=o;continue}else{k[h>>2]=l+1;qr(i[l>>0]|0)|0;e=q;n=p;l=o;continue}}do if(h){g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=qr(i[g>>0]|0)|0;if(Er(g,pr()|0)|0){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);do if(p){g=k[p+12>>2]|0;if((g|0)==(k[p+16>>2]|0))g=Pc[k[(k[p>>2]|0)+36>>2]&127](p)|0;else g=qr(i[g>>0]|0)|0;if(!(Er(g,pr()|0)|0))if(h)break a;else break;else{k[b>>2]=0;s=62;break}}else s=62;while(0);if((s|0)==62?!h:0)break;k[c>>2]=k[c>>2]|2;break}k[c>>2]=k[c>>2]|4;f=0}while(0);return f|0}function Lu(a){a=a|0;Ur(a);return}function Mu(a){a=a|0;Ur(a);EA(a);return}function Nu(a){a=a|0;return 2}function Ou(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=iv(a,i,h,d,e,f,9308,9340)|0;u=g;return f|0}function Pu(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0;g=u;u=u+16|0;h=g+12|0;j=g+8|0;m=g+4|0;l=g;n=a+8|0;n=Pc[k[(k[n>>2]|0)+20>>2]&127](n)|0;k[m>>2]=k[b>>2];k[l>>2]=k[c>>2];c=i[n+8+3>>0]|0;o=c<<24>>24<0;b=o?k[n>>2]|0:n;c=b+((o?k[n+4>>2]|0:c&255)<<2)|0;k[j>>2]=k[m>>2];k[h>>2]=k[l>>2];f=iv(a,j,h,d,e,f,b,c)|0;u=g;return f|0}function Qu(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32652)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];gv(a,f+24|0,b,h,e,d);u=g;return k[b>>2]|0}function Ru(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32652)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];hv(a,f+16|0,b,h,e,d);u=g;return k[b>>2]|0}function Su(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;d=Fr(d)|0;k[h>>2]=d;d=ns(h,32652)|0;os(h);k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];tv(a,f+20|0,b,h,e,d);u=g;return k[b>>2]|0}function Tu(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;X=u;u=u+144|0;j=X+128|0;h=X+112|0;V=X+124|0;W=X+120|0;l=X+116|0;m=X+108|0;n=X+104|0;o=X+100|0;p=X+96|0;q=X+92|0;r=X+88|0;s=X+84|0;t=X+80|0;v=X+76|0;w=X+72|0;x=X+68|0;y=X+64|0;z=X+60|0;A=X+56|0;B=X+52|0;C=X+48|0;D=X+44|0;E=X+40|0;F=X+36|0;G=X+32|0;H=X+28|0;I=X+24|0;J=X+20|0;K=X+16|0;L=X+12|0;M=X+8|0;N=X+4|0;O=X;k[e>>2]=0;P=Fr(d)|0;k[j>>2]=P;P=ns(j,32652)|0;os(j);Q=f+8|0;R=f+20|0;S=f+16|0;T=f+24|0;U=a+8|0;do switch(g<<24>>24|0){case 65:case 97:{k[V>>2]=k[c>>2];k[j>>2]=k[V>>2];gv(a,T,b,j,e,P);Y=26;break}case 104:case 66:case 98:{k[W>>2]=k[c>>2];k[j>>2]=k[W>>2];hv(a,S,b,j,e,P);Y=26;break}case 99:{W=Pc[k[(k[U>>2]|0)+12>>2]&127](U)|0;k[l>>2]=k[b>>2];k[m>>2]=k[c>>2];Y=i[W+8+3>>0]|0;c=Y<<24>>24<0;g=c?k[W>>2]|0:W;Y=g+((c?k[W+4>>2]|0:Y&255)<<2)|0;k[h>>2]=k[l>>2];k[j>>2]=k[m>>2];Y=iv(a,h,j,d,e,f,g,Y)|0;k[b>>2]=Y;Y=26;break}case 101:case 100:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];jv(a,f+12|0,b,j,e,P);Y=26;break}case 68:{k[o>>2]=k[b>>2];k[p>>2]=k[c>>2];k[h>>2]=k[o>>2];k[j>>2]=k[p>>2];Y=iv(a,h,j,d,e,f,9148,9180)|0;k[b>>2]=Y;Y=26;break}case 70:{k[q>>2]=k[b>>2];k[r>>2]=k[c>>2];k[h>>2]=k[q>>2];k[j>>2]=k[r>>2];Y=iv(a,h,j,d,e,f,9180,9212)|0;k[b>>2]=Y;Y=26;break}case 72:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];kv(a,Q,b,j,e,P);Y=26;break}case 73:{k[t>>2]=k[c>>2];k[j>>2]=k[t>>2];lv(a,Q,b,j,e,P);Y=26;break}case 106:{k[v>>2]=k[c>>2];k[j>>2]=k[v>>2];mv(a,f+28|0,b,j,e,P);Y=26;break}case 109:{k[w>>2]=k[c>>2];k[j>>2]=k[w>>2];nv(a,S,b,j,e,P);Y=26;break}case 77:{k[x>>2]=k[c>>2];k[j>>2]=k[x>>2];ov(a,f+4|0,b,j,e,P);Y=26;break}case 116:case 110:{k[y>>2]=k[c>>2];k[j>>2]=k[y>>2];pv(a,b,j,e,P);Y=26;break}case 112:{k[z>>2]=k[c>>2];k[j>>2]=k[z>>2];qv(a,Q,b,j,e,P);Y=26;break}case 114:{k[A>>2]=k[b>>2];k[B>>2]=k[c>>2];k[h>>2]=k[A>>2];k[j>>2]=k[B>>2];Y=iv(a,h,j,d,e,f,9212,9256)|0;k[b>>2]=Y;Y=26;break}case 82:{k[C>>2]=k[b>>2];k[D>>2]=k[c>>2];k[h>>2]=k[C>>2];k[j>>2]=k[D>>2];Y=iv(a,h,j,d,e,f,9256,9276)|0;k[b>>2]=Y;Y=26;break}case 83:{k[E>>2]=k[c>>2];k[j>>2]=k[E>>2];rv(a,f,b,j,e,P);Y=26;break}case 84:{k[F>>2]=k[b>>2];k[G>>2]=k[c>>2];k[h>>2]=k[F>>2];k[j>>2]=k[G>>2];Y=iv(a,h,j,d,e,f,9276,9308)|0;k[b>>2]=Y;Y=26;break}case 119:{k[H>>2]=k[c>>2];k[j>>2]=k[H>>2];sv(a,T,b,j,e,P);Y=26;break}case 120:{g=k[(k[a>>2]|0)+20>>2]|0;k[I>>2]=k[b>>2];k[J>>2]=k[c>>2];k[h>>2]=k[I>>2];k[j>>2]=k[J>>2];h=Oc[g&63](a,h,j,d,e,f)|0;break}case 88:{W=Pc[k[(k[U>>2]|0)+24>>2]&127](U)|0;k[K>>2]=k[b>>2];k[L>>2]=k[c>>2];Y=i[W+8+3>>0]|0;c=Y<<24>>24<0;g=c?k[W>>2]|0:W;Y=g+((c?k[W+4>>2]|0:Y&255)<<2)|0;k[h>>2]=k[K>>2];k[j>>2]=k[L>>2];Y=iv(a,h,j,d,e,f,g,Y)|0;k[b>>2]=Y;Y=26;break}case 121:{k[M>>2]=k[c>>2];k[j>>2]=k[M>>2];tv(a,R,b,j,e,P);Y=26;break}case 89:{k[N>>2]=k[c>>2];k[j>>2]=k[N>>2];uv(a,R,b,j,e,P);Y=26;break}case 37:{k[O>>2]=k[c>>2];k[j>>2]=k[O>>2];vv(a,b,j,e,P);Y=26;break}default:{k[e>>2]=k[e>>2]|4;Y=26}}while(0);if((Y|0)==26)h=k[b>>2]|0;u=X;return h|0}function Uu(a){a=a|0;if((i[31472]|0)==0?aF(31472)|0:0){ev();k[8576]=34136}return k[8576]|0}function Vu(a){a=a|0;if((i[31456]|0)==0?aF(31456)|0:0){cv();k[8533]=33844}return k[8533]|0}function Wu(a){a=a|0;if((i[31440]|0)==0?aF(31440)|0:0){av();k[8460]=33552}return k[8460]|0}function Xu(a){a=a|0;if((i[31432]|0)==0?aF(31432)|0:0){k[8385]=0;k[8386]=0;k[8387]=0;ZA(33540,8180,$u(8180)|0);cb(103,33540,x|0)|0}return 33540}function Yu(a){a=a|0;if((i[31424]|0)==0?aF(31424)|0:0){k[8382]=0;k[8383]=0;k[8384]=0;ZA(33528,8132,$u(8132)|0);cb(103,33528,x|0)|0}return 33528}function Zu(a){a=a|0;if((i[31416]|0)==0?aF(31416)|0:0){k[8379]=0;k[8380]=0;k[8381]=0;ZA(33516,8096,$u(8096)|0);cb(103,33516,x|0)|0}return 33516}function _u(a){a=a|0;if((i[31408]|0)==0?aF(31408)|0:0){k[8376]=0;k[8377]=0;k[8378]=0;ZA(33504,8060,$u(8060)|0);cb(103,33504,x|0)|0}return 33504}function $u(a){a=a|0;return Cp(a)|0}function av(){var a=0,b=0;if((i[31448]|0)==0?aF(31448)|0:0){b=33552;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=33840);cb(104,0,x|0)|0}fB(33552,8264)|0;fB(33564,8276)|0;return}function bv(a){a=a|0;a=33840;do{a=a+-12|0;aB(a)}while((a|0)!=33552);return}function cv(){var a=0,b=0;if((i[31464]|0)==0?aF(31464)|0:0){b=33844;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=34132);cb(105,0,x|0)|0}fB(33844,8288)|0;fB(33856,8320)|0;fB(33868,8356)|0;fB(33880,8380)|0;fB(33892,8404)|0;fB(33904,8420)|0;fB(33916,8440)|0;fB(33928,8460)|0;fB(33940,8488)|0;fB(33952,8528)|0;fB(33964,8560)|0;fB(33976,8596)|0;fB(33988,8632)|0;fB(34e3,8648)|0;fB(34012,8664)|0;fB(34024,8680)|0;fB(34036,8404)|0;fB(34048,8696)|0;fB(34060,8712)|0;fB(34072,8728)|0;fB(34084,8744)|0;fB(34096,8760)|0;fB(34108,8776)|0;fB(34120,8792)|0;return}function dv(a){a=a|0;a=34132;do{a=a+-12|0;aB(a)}while((a|0)!=33844);return}function ev(){var a=0,b=0;if((i[31480]|0)==0?aF(31480)|0:0){b=34136;do{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}b=b+12|0}while((b|0)!=34304);cb(106,0,x|0)|0}fB(34136,8808)|0;fB(34148,8836)|0;fB(34160,8864)|0;fB(34172,8896)|0;fB(34184,8936)|0;fB(34196,8972)|0;fB(34208,9e3)|0;fB(34220,9036)|0;fB(34232,9052)|0;fB(34244,9068)|0;fB(34256,9084)|0;fB(34268,9100)|0;fB(34280,9116)|0;fB(34292,9132)|0;return}function fv(a){a=a|0;a=34304;do{a=a+-12|0;aB(a)}while((a|0)!=34136);return}function gv(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;a=a+8|0;a=Pc[k[k[a>>2]>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];a=(ut(c,h,a,a+168|0,f,e,0)|0)-a|0;if((a|0)<168)k[b>>2]=((a|0)/12|0|0)%7|0;u=g;return}function hv(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 g=0,h=0,i=0;g=u;u=u+16|0;h=g+4|0;i=g;a=a+8|0;a=Pc[k[(k[a>>2]|0)+4>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];a=(ut(c,h,a,a+288|0,f,e,0)|0)-a|0;if((a|0)<288)k[b>>2]=((a|0)/12|0|0)%12|0;u=g;return}function iv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;r=x+12|0;q=x+8|0;t=x+4|0;v=x;s=Fr(d)|0;k[r>>2]=s;s=ns(r,32652)|0;os(r);k[e>>2]=0;i=0;a:while(1){p=(g|0)!=(h|0);j=i;while(1){i=k[b>>2]|0;if(!(p&(j|0)==0))break a;l=i;if(i){j=k[i+12>>2]|0;if((j|0)==(k[i+16>>2]|0))j=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=ur(k[j>>2]|0)|0;if(Gr(j,tr()|0)|0){k[b>>2]=0;i=0;n=1;o=0}else{n=0;o=l}}else{i=0;n=1;o=l}m=k[c>>2]|0;j=m;do if(m){l=k[m+12>>2]|0;if((l|0)==(k[m+16>>2]|0))l=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else l=ur(k[l>>2]|0)|0;if(!(Gr(l,tr()|0)|0))if(n)break;else{w=58;break a}else{k[c>>2]=0;j=0;w=16;break}}else w=16;while(0);if((w|0)==16){w=0;if(n){w=58;break a}else m=0}if((Sc[k[(k[s>>2]|0)+52>>2]&63](s,k[g>>2]|0,0)|0)<<24>>24==37){w=19;break}if(Sc[k[(k[s>>2]|0)+12>>2]&63](s,8192,k[g>>2]|0)|0){w=26;break}l=i+12|0;j=k[l>>2]|0;m=i+16|0;if((j|0)==(k[m>>2]|0))j=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=ur(k[j>>2]|0)|0;o=Yc[k[(k[s>>2]|0)+28>>2]&63](s,j)|0;if((o|0)==(Yc[k[(k[s>>2]|0)+28>>2]&63](s,k[g>>2]|0)|0)){w=54;break}k[e>>2]=4;j=4}b:do if((w|0)==19){w=0;n=g+4|0;if((n|0)==(h|0)){w=58;break a}l=Sc[k[(k[s>>2]|0)+52>>2]&63](s,k[n>>2]|0,0)|0;switch(l<<24>>24){case 48:case 69:{g=g+8|0;if((g|0)==(h|0)){w=58;break a}m=l;i=Sc[k[(k[s>>2]|0)+52>>2]&63](s,k[g>>2]|0,0)|0;g=n;break}default:{m=0;i=l}}p=k[(k[a>>2]|0)+36>>2]|0;k[t>>2]=o;k[v>>2]=j;k[q>>2]=k[t>>2];k[r>>2]=k[v>>2];p=Xc[p&15](a,q,r,d,e,f,i,m)|0;k[b>>2]=p;g=g+8|0}else if((w|0)==26){while(1){w=0;g=g+4|0;if((g|0)==(h|0)){g=h;break}if(Sc[k[(k[s>>2]|0)+12>>2]&63](s,8192,k[g>>2]|0)|0)w=26;else break}j=m;while(1){if(i){l=k[i+12>>2]|0;if((l|0)==(k[i+16>>2]|0))l=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else l=ur(k[l>>2]|0)|0;if(Gr(l,tr()|0)|0){k[b>>2]=0;n=1;i=0}else n=0}else{n=1;i=0}do if(m){l=k[m+12>>2]|0;if((l|0)==(k[m+16>>2]|0))l=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else l=ur(k[l>>2]|0)|0;if(!(Gr(l,tr()|0)|0))if(n^(j|0)==0){o=j;m=j;break}else break b;else{k[c>>2]=0;j=0;w=41;break}}else w=41;while(0);if((w|0)==41){w=0;if(n)break b;else{o=j;m=0}}l=i+12|0;j=k[l>>2]|0;n=i+16|0;if((j|0)==(k[n>>2]|0))j=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=ur(k[j>>2]|0)|0;if(!(Sc[k[(k[s>>2]|0)+12>>2]&63](s,8192,j)|0))break b;j=k[l>>2]|0;if((j|0)==(k[n>>2]|0)){Pc[k[(k[i>>2]|0)+40>>2]&127](i)|0;j=o;continue}else{k[l>>2]=j+4;ur(k[j>>2]|0)|0;j=o;continue}}}else if((w|0)==54){w=0;g=g+4|0;j=k[l>>2]|0;if((j|0)==(k[m>>2]|0)){Pc[k[(k[i>>2]|0)+40>>2]&127](i)|0;break}else{k[l>>2]=j+4;ur(k[j>>2]|0)|0;break}}while(0);i=k[e>>2]|0}if((w|0)==58)k[e>>2]=4;if(i){g=k[i+12>>2]|0;if((g|0)==(k[i+16>>2]|0))g=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else g=ur(k[g>>2]|0)|0;if(Gr(g,tr()|0)|0){k[b>>2]=0;i=0;l=1}else l=0}else{i=0;l=1}g=k[c>>2]|0;do if(g){j=k[g+12>>2]|0;if((j|0)==(k[g+16>>2]|0))g=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=ur(k[j>>2]|0)|0;if(!(Gr(g,tr()|0)|0))if(l)break;else{w=73;break}else{k[c>>2]=0;w=71;break}}else w=71;while(0);if((w|0)==71?l:0)w=73;if((w|0)==73)k[e>>2]=k[e>>2]|2;u=x;return i|0}function jv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<31&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function kv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<24&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function lv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<12&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function mv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,3)|0;c=k[e>>2]|0;if((a|0)<366&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function nv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<13&(c&4|0)==0)k[b>>2]=a+-1;else k[e>>2]=c|4;u=g;return}function ov(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<60&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function pv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;g=1;break}else{g=(k[b>>2]|0)==0;break}}else g=1;while(0);f=k[c>>2]|0;do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(g){g=f;break}else{g=f;break a}else{k[c>>2]=0;h=15;break}}else h=15;while(0);if((h|0)==15){h=0;if(g){g=0;break}else g=0}a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if(!(Sc[k[(k[e>>2]|0)+12>>2]&63](e,8192,a)|0))break;a=k[b>>2]|0;f=a+12|0;g=k[f>>2]|0;if((g|0)==(k[a+16>>2]|0)){Pc[k[(k[a>>2]|0)+40>>2]&127](a)|0;continue}else{k[f>>2]=g+4;ur(k[g>>2]|0)|0;continue}}a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}else f=1;while(0);do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(f)break;else{h=39;break}else{k[c>>2]=0;h=37;break}}else h=37;while(0);if((h|0)==37?f:0)h=39;if((h|0)==39)k[d>>2]=k[d>>2]|2;return}function qv(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 g=0,h=0,j=0,l=0,m=0;m=u;u=u+16|0;j=m+4|0;l=m;h=a+8|0;h=Pc[k[(k[h>>2]|0)+8>>2]&127](h)|0;a=i[h+8+3>>0]|0;if(a<<24>>24<0)g=k[h+4>>2]|0;else g=a&255;a=i[h+20+3>>0]|0;if(a<<24>>24<0)a=k[h+16>>2]|0;else a=a&255;do if((g|0)!=(0-a|0)){k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];a=(ut(c,j,h,h+24|0,f,e,0)|0)-h|0;g=k[b>>2]|0;if((g|0)==12&(a|0)==0){k[b>>2]=0;break}if((g|0)<12&(a|0)==12)k[b>>2]=g+12}else k[e>>2]=k[e>>2]|4;while(0);u=m;return}function rv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<61&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function sv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,1)|0;c=k[e>>2]|0;if((a|0)<7&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;u=g;return}function tv(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 g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,4)|0;if(!(k[e>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a|0)<100?a+1900|0:a;k[b>>2]=a+-1900}u=g;return}function uv(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=u;u=u+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=wv(c,a,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=a+-1900;u=g;return}function vv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;g=1;break}else{g=(k[b>>2]|0)==0;break}}else g=1;while(0);f=k[c>>2]|0;do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(g){h=f;i=16;break}else{a=6;i=38;break}else{k[c>>2]=0;i=14;break}}else i=14;while(0);if((i|0)==14)if(g){a=6;i=38}else{h=0;i=16}a:do if((i|0)==16){a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if((Sc[k[(k[e>>2]|0)+52>>2]&63](e,a,0)|0)<<24>>24==37){a=k[b>>2]|0;f=a+12|0;g=k[f>>2]|0;if((g|0)==(k[a+16>>2]|0))Pc[k[(k[a>>2]|0)+40>>2]&127](a)|0;else{k[f>>2]=g+4;ur(k[g>>2]|0)|0}a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[f>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}else f=1;while(0);do if(h|0){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(f)break a;else{a=2;i=38;break a}else{k[c>>2]=0;break}}while(0);if(f){a=2;i=38}}else{a=4;i=38}}while(0);if((i|0)==38)k[d>>2]=k[d>>2]|a;return}function wv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;f=k[a>>2]|0;do if(f){g=k[f+12>>2]|0;if((g|0)==(k[f+16>>2]|0))f=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=ur(k[g>>2]|0)|0;if(Gr(f,tr()|0)|0){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);g=k[b>>2]|0;do if(g){f=k[g+12>>2]|0;if((f|0)==(k[g+16>>2]|0))f=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else f=ur(k[f>>2]|0)|0;if(!(Gr(f,tr()|0)|0))if(h){p=17;break}else{p=16;break}else{k[b>>2]=0;p=14;break}}else p=14;while(0);if((p|0)==14)if(h)p=16;else{g=0;p=17}a:do if((p|0)==16){k[c>>2]=k[c>>2]|6;f=0}else if((p|0)==17){f=k[a>>2]|0;h=k[f+12>>2]|0;if((h|0)==(k[f+16>>2]|0))f=Pc[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=ur(k[h>>2]|0)|0;if(!(Sc[k[(k[d>>2]|0)+12>>2]&63](d,2048,f)|0)){k[c>>2]=k[c>>2]|4;f=0;break}f=(Sc[k[(k[d>>2]|0)+52>>2]&63](d,f,0)|0)<<24>>24;h=k[a>>2]|0;i=h+12|0;j=k[i>>2]|0;if((j|0)==(k[h+16>>2]|0)){Pc[k[(k[h>>2]|0)+40>>2]&127](h)|0;l=g;i=g}else{k[i>>2]=j+4;ur(k[j>>2]|0)|0;l=g;i=g}while(1){f=f+-48|0;o=e+-1|0;g=k[a>>2]|0;do if(g){h=k[g+12>>2]|0;if((h|0)==(k[g+16>>2]|0))g=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=ur(k[h>>2]|0)|0;if(Gr(g,tr()|0)|0){k[a>>2]=0;j=1;break}else{j=(k[a>>2]|0)==0;break}}else j=1;while(0);do if(i){g=k[i+12>>2]|0;if((g|0)==(k[i+16>>2]|0))g=Pc[k[(k[i>>2]|0)+36>>2]&127](i)|0;else g=ur(k[g>>2]|0)|0;if(Gr(g,tr()|0)|0){k[b>>2]=0;n=0;g=1;m=0;break}else{n=l;g=(l|0)==0;m=l;break}}else{n=l;g=1;m=0}while(0);h=k[a>>2]|0;if(!((e|0)>1&(j^g)))break;g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=ur(k[g>>2]|0)|0;if(!(Sc[k[(k[d>>2]|0)+12>>2]&63](d,2048,g)|0))break a;f=((Sc[k[(k[d>>2]|0)+52>>2]&63](d,g,0)|0)<<24>>24)+(f*10|0)|0;g=k[a>>2]|0;h=g+12|0;i=k[h>>2]|0;if((i|0)==(k[g+16>>2]|0)){Pc[k[(k[g>>2]|0)+40>>2]&127](g)|0;e=o;l=n;i=m;continue}else{k[h>>2]=i+4;ur(k[i>>2]|0)|0;e=o;l=n;i=m;continue}}do if(h){g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=ur(k[g>>2]|0)|0;if(Gr(g,tr()|0)|0){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);do if(n){g=k[n+12>>2]|0;if((g|0)==(k[n+16>>2]|0))g=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else g=ur(k[g>>2]|0)|0;if(!(Gr(g,tr()|0)|0))if(h)break a;else break;else{k[b>>2]=0;p=60;break}}else p=60;while(0);if((p|0)==60?!h:0)break;k[c>>2]=k[c>>2]|2}while(0);return f|0}function xv(a){a=a|0;Cv(a+8|0);Ur(a);return}function yv(a){a=a|0;Cv(a+8|0);Ur(a);EA(a);return}function zv(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;var h=0;h=u;u=u+112|0;c=h+4|0;d=h;k[d>>2]=c+100;Av(a+8|0,c,d,e,f,g);g=k[d>>2]|0;f=c;c=k[b>>2]|0;while(1){if((f|0)==(g|0))break;d=i[f>>0]|0;if(!c)c=0;else{a=c+24|0;e=k[a>>2]|0;if((e|0)==(k[c+28>>2]|0)){b=k[(k[c>>2]|0)+52>>2]|0;d=qr(d)|0;d=Yc[b&63](c,d)|0}else{k[a>>2]=e+1;i[e>>0]=d;d=qr(d)|0}b=Er(d,pr()|0)|0;c=b?0:c}f=f+1|0}u=h;return c|0}function Av(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 g=0,h=0,j=0,l=0;l=u;u=u+16|0;g=l;i[g>>0]=37;h=g+1|0;i[h>>0]=e;j=g+2|0;i[j>>0]=f;i[g+3>>0]=0;if(f<<24>>24){i[h>>0]=f;i[j>>0]=e}j=Bv(b,k[c>>2]|0)|0;j=b+(mc(b|0,j|0,g|0,d|0,k[a>>2]|0)|0)|0;k[c>>2]=j;u=l;return}function Bv(a,b){a=a|0;b=b|0;return b-a|0}function Cv(a){a=a|0;var b=0;b=k[a>>2]|0;if((b|0)!=(qs()|0))Vp(k[a>>2]|0);return}function Dv(a){a=a|0;Cv(a+8|0);Ur(a);return}function Ev(a){a=a|0;Cv(a+8|0);Ur(a);EA(a);return}function Fv(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;var h=0;h=u;u=u+416|0;c=h+8|0;d=h;k[d>>2]=c+400;Gv(a+8|0,c,d,e,f,g);g=k[d>>2]|0;f=c;c=k[b>>2]|0;while(1){if((f|0)==(g|0))break;d=k[f>>2]|0;if(!c)c=0;else{a=c+24|0;e=k[a>>2]|0;if((e|0)==(k[c+28>>2]|0)){b=k[(k[c>>2]|0)+52>>2]|0;d=ur(d)|0;d=Yc[b&63](c,d)|0}else{k[a>>2]=e+4;k[e>>2]=d;d=ur(d)|0}b=Gr(d,tr()|0)|0;c=b?0:c}f=f+4|0}u=h;return c|0}function Gv(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+128|0;j=g+16|0;l=g+12|0;h=g;i=g+8|0;k[l>>2]=j+100;Av(a,j,l,d,e,f);d=h;k[d>>2]=0;k[d+4>>2]=0;k[i>>2]=j;d=Hv(b,k[c>>2]|0)|0;a=cq(k[a>>2]|0)|0;d=Cq(b,i,d,h)|0;if(a|0)cq(a)|0;k[c>>2]=b+(d<<2);u=g;return}function Hv(a,b){a=a|0;b=b|0;return b-a>>2|0}function Iv(a){a=a|0;Ur(a);return}function Jv(a){a=a|0;Ur(a);EA(a);return}function Kv(a){a=a|0;return 127}function Lv(a){a=a|0;return 127}function Mv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Nv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Ov(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Pv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;LA(a,1,45);return}function Qv(a){a=a|0;return 0}function Rv(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Sv(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Tv(a){a=a|0;Ur(a);return}function Uv(a){a=a|0;Ur(a);EA(a);return}function Vv(a){a=a|0;return 127}function Wv(a){a=a|0;return 127}function Xv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Yv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Zv(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function _v(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;LA(a,1,45);return}function $v(a){a=a|0;return 0}function aw(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function bw(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function cw(a){a=a|0;Ur(a);return}function dw(a){a=a|0;Ur(a);EA(a);return}function ew(a){a=a|0;return 2147483647}function fw(a){a=a|0;return 2147483647}function gw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function hw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function iw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function jw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;_A(a,1,45);return}function kw(a){a=a|0;return 0}function lw(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function mw(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function nw(a){a=a|0;Ur(a);return}function ow(a){a=a|0;Ur(a);EA(a);return}function pw(a){a=a|0;return 2147483647}function qw(a){a=a|0;return 2147483647}function rw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function sw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function tw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function uw(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;_A(a,1,45);return}function vw(a){a=a|0;return 0}function ww(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function xw(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function yw(a){a=a|0;Ur(a);return}function zw(a){a=a|0;Ur(a);EA(a);return}function Aw(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+240|0;n=w+24|0;q=w;m=w+140|0;v=w+16|0;p=w+12|0;r=w+8|0;h=w+136|0;j=w+4|0;o=w+36|0;k[v>>2]=m;t=v+4|0;k[t>>2]=107;a=Fr(e)|0;k[r>>2]=a;a=ns(r,32620)|0;i[h>>0]=0;k[j>>2]=k[c>>2];l=k[e+4>>2]|0;k[n>>2]=k[j>>2];if(Dw(b,n,d,r,l,f,h,a,v,p,m+100|0)|0){Rc[k[(k[a>>2]|0)+32>>2]&7](a,27374,27384,n)|0;a=(k[p>>2]|0)-(k[v>>2]|0)|0;if((a|0)>98){a=Oq(a+2|0)|0;d=a;if(!a)a=0}else{a=o;d=0}if(i[h>>0]|0){i[a>>0]=45;a=a+1|0}l=n+10|0;m=n;j=k[v>>2]|0;while(1){if(j>>>0>=(k[p>>2]|0)>>>0)break;h=i[j>>0]|0;e=n;while(1){if((e|0)==(l|0)){e=l;break}if((i[e>>0]|0)==h<<24>>24)break;e=e+1|0}i[a>>0]=i[27374+(e-m)>>0]|0;j=j+1|0;a=a+1|0}i[a>>0]=0;k[q>>2]=g;sq(o,27385,q)|0;if(d|0)Pq(d)}a=k[b>>2]|0;do if(a){d=k[a+12>>2]|0;if((d|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[d>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;e=1;break}else{e=(k[b>>2]|0)==0;break}}else e=1;while(0);a=k[c>>2]|0;do if(a){d=k[a+12>>2]|0;if((d|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[d>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(e)break;else{s=32;break}else{k[c>>2]=0;s=30;break}}else s=30;while(0);if((s|0)==30?e:0)s=32;if((s|0)==32)k[f>>2]=k[f>>2]|2;d=k[b>>2]|0;os(r);a=k[v>>2]|0;k[v>>2]=0;if(a|0)Mc[k[t>>2]&127](a);u=w;return d|0}function Bw(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+144|0;h=t+24|0;a=t+32|0;s=t+16|0;m=t+8|0;p=t;j=t+28|0;n=t+4|0;k[s>>2]=a;r=s+4|0;k[r>>2]=107;l=Fr(e)|0;k[p>>2]=l;l=ns(p,32620)|0;i[j>>0]=0;o=k[c>>2]|0;k[n>>2]=o;e=k[e+4>>2]|0;k[h>>2]=k[n>>2];n=o;if(Dw(b,h,d,p,e,f,j,l,s,m,a+100|0)|0){a=g+11|0;if((i[a>>0]|0)<0){d=k[g>>2]|0;i[h>>0]=0;Tr(d,h);k[g+4>>2]=0}else{i[h>>0]=0;Tr(g,h);i[a>>0]=0}if(i[j>>0]|0)YA(g,Yc[k[(k[l>>2]|0)+28>>2]&63](l,45)|0);j=Yc[k[(k[l>>2]|0)+28>>2]&63](l,48)|0;e=k[m>>2]|0;h=e+-1|0;a=k[s>>2]|0;while(1){if(a>>>0>=h>>>0)break;if((i[a>>0]|0)!=j<<24>>24)break;a=a+1|0}Ew(g,a,e)|0}a=k[b>>2]|0;do if(a){e=k[a+12>>2]|0;if((e|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=qr(i[e>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;e=1;break}else{e=(k[b>>2]|0)==0;break}}else e=1;while(0);do if(o){a=k[n+12>>2]|0;if((a|0)==(k[n+16>>2]|0))a=Pc[k[(k[o>>2]|0)+36>>2]&127](n)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(e)break;else{q=27;break}else{k[c>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?e:0)q=27;if((q|0)==27)k[f>>2]=k[f>>2]|2;e=k[b>>2]|0;os(p);a=k[s>>2]|0;k[s>>2]=0;if(a|0)Mc[k[r>>2]&127](a);u=t;return e|0}function Cw(a){a=a|0;return} -function bm(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;ba=u;u=u+48|0;R=ba+32|0;S=ba+16|0;T=ba;U=k[a+8>>2]|0;Q=k[b+4>>2]|0;if((k[a+4>>2]|0)!=(k[b+8>>2]|0))Oa(17024,17059,25,17159);if(U>>>0>=131073){e=Oq(U+16|0)|0;f=e+16&-16;if(!e){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}k[f+-4>>2]=e;if(!f){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}if(U>>>0>268435455){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}else{_=1;Y=f}}else{Y=u;u=u+((1*(U+15|0)|0)+15&-16)|0;_=0;Y=Y+15&-16}g=U<<4;if(g>>>0>=131073){e=Oq(g+16|0)|0;f=e+16&-16;if(!e){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}k[f+-4>>2]=e;if(!f){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}else W=f}else{W=u;u=u+((1*(g|15)|0)+15&-16)|0;W=W+15&-16}X=W;M=W;V=g>>>0>131072;g=U<<2;if(g>>>0>=131073){e=Oq(g+16|0)|0;f=e+16&-16;if(!e){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}k[f+-4>>2]=e;if(!f){ba=Kb(4)|0;cF(ba);Cc(ba|0,2032,79)}else O=f}else{O=u;u=u+((1*(g+15|0)|0)+15&-16)|0;O=O+15&-16}P=O;L=O;N=g>>>0>131072;iF(Y|0,0,U|0)|0;K=a+16|0;g=k[K>>2]|0;if(g){h=k[a+4>>2]|0;if(h){if((h|0)<=-1)Oa(14697,13988,163,14058);e=k[g>>2]|0;if((h|0)!=1){f=1;do{e=(k[g+(f<<2)>>2]|0)+e|0;f=f+1|0}while((f|0)<(h|0))}}else e=0}else{e=k[a+12>>2]|0;e=(k[e+(k[a+4>>2]<<2)>>2]|0)-(k[e>>2]|0)|0}J=b+16|0;h=k[J>>2]|0;if(h){j=k[b+4>>2]|0;if(j){if((j|0)<=-1)Oa(14697,13988,163,14058);f=k[h>>2]|0;if((j|0)!=1){g=1;do{f=(k[h+(g<<2)>>2]|0)+f|0;g=g+1|0}while((g|0)<(j|0))}}else f=0}else{f=k[b+12>>2]|0;f=(k[f+(k[b+4>>2]<<2)>>2]|0)-(k[f>>2]|0)|0}G=c+28|0;k[G>>2]=0;H=c+12|0;I=c+4|0;iF(k[H>>2]|0,0,(k[I>>2]<<2)+4|0)|0;g=k[c+16>>2]|0;if(g|0)iF(g|0,0,k[I>>2]<<2|0)|0;sl(c,f+e|0);a:do if((Q|0)>0){E=b+20|0;F=b+24|0;x=b+12|0;y=(U*100|0)/139|0;z=(U|0)/11|0;A=c+20|0;w=c+24|0;B=(U|0)>0;C=a+20|0;D=a+24|0;t=a+12|0;v=T+8|0;s=0;b:while(1){e=k[H>>2]|0;f=k[e+(s<<2)>>2]|0;if((f|0)!=(k[G>>2]|0)){e=47;break}r=s;s=s+1|0;e=e+(s<<2)|0;if(k[e>>2]|0){e=49;break}k[e>>2]=f;o=k[E>>2]|0;q=k[F>>2]|0;e=k[x>>2]|0;g=k[e+(r<<2)>>2]|0;f=k[J>>2]|0;if(!f)n=k[e+(s<<2)>>2]|0;else n=(k[f+(r<<2)>>2]|0)+g|0;if((g|0)<(n|0)){e=0;do{f=o+(g<<4)|0;k[R>>2]=k[f>>2];k[R+4>>2]=k[f+4>>2];k[R+8>>2]=k[f+8>>2];k[R+12>>2]=k[f+12>>2];f=k[q+(g<<2)>>2]|0;l=k[C>>2]|0;m=k[D>>2]|0;h=k[t>>2]|0;b=k[h+(f<<2)>>2]|0;j=k[K>>2]|0;if(!j)a=k[h+(f+1<<2)>>2]|0;else a=(k[j+(f<<2)>>2]|0)+b|0;if((b|0)<(a|0)){j=b;do{f=k[m+(j<<2)>>2]|0;h=l+(j<<4)|0;k[S>>2]=k[h>>2];k[S+4>>2]=k[h+4>>2];k[S+8>>2]=k[h+8>>2];k[S+12>>2]=k[h+12>>2];h=Y+f|0;if(!(i[h>>0]|0)){i[h>>0]=1;uk(T,S,R);b=M+(f<<4)|0;k[b>>2]=k[T>>2];k[b+4>>2]=k[T+4>>2];k[b+8>>2]=k[T+8>>2];k[b+12>>2]=k[T+12>>2];k[L+(e<<2)>>2]=f;e=e+1|0}else{uk(T,S,R);b=M+(f<<4)|0;p[b>>3]=+p[T>>3]+ +p[b>>3];b=M+(f<<4)+8|0;p[b>>3]=+p[v>>3]+ +p[b>>3]}j=j+1|0}while((j|0)<(a|0))}g=g+1|0}while((g|0)<(n|0));b=e}else b=0;c:do if(!d){if((b|0)>0){e=0;do{r=k[L+(e<<2)>>2]|0;o=(k[H>>2]|0)+(s<<2)|0;q=k[o>>2]|0;k[o>>2]=q+1;o=k[G>>2]|0;ql(A,o+1|0,1.0);n=(k[A>>2]|0)+(o<<4)|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[(k[w>>2]|0)+(o<<2)>>2]=r;q=(k[A>>2]|0)+(q<<4)|0;o=M+(r<<4)|0;k[q>>2]=k[o>>2];k[q+4>>2]=k[o+4>>2];k[q+8>>2]=k[o+8>>2];k[q+12>>2]=k[o+12>>2];i[Y+r>>0]=0;e=e+1|0}while((e|0)<(b|0))}}else{if(!((b|0)<200&(b|0)<(z|0))){if((b|0)<=-1){e=68;break b}q=b>>>1|b;q=q>>>2|q;q=q>>>4|q;q=q>>>8|q;q=2612+((aa(q>>>16|q,130329821)|0)>>>27<<2)|0;if((aa(k[q>>2]|0,b)|0)>=(y|0)){if(B)h=0;else break;while(1){e=Y+h|0;if(i[e>>0]|0){i[e>>0]=0;e=k[H>>2]|0;f=e+(s<<2)|0;g=k[f>>2]|0;if((g|0)!=(k[G>>2]|0)){e=82;break b}if((g|0)!=(k[e+(r<<2)>>2]|0)?(k[(k[w>>2]|0)+(g+-1<<2)>>2]|0)>=(h|0):0){e=85;break b}k[f>>2]=g+1;q=k[G>>2]|0;ql(A,q+1|0,1.0);o=(k[A>>2]|0)+(q<<4)|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[(k[w>>2]|0)+(q<<2)>>2]=h;q=(k[A>>2]|0)+(g<<4)|0;o=M+(h<<4)|0;k[q>>2]=k[o>>2];k[q+4>>2]=k[o+4>>2];k[q+8>>2]=k[o+8>>2];k[q+12>>2]=k[o+12>>2]}h=h+1|0;if((h|0)>=(U|0))break c}}}if((b|0)<=1)if((b|0)==1)e=0;else break;else{Tq(L,L+(b<<2)|0,R);e=0}do{f=k[L+(e<<2)>>2]|0;g=k[H>>2]|0;h=g+(s<<2)|0;j=k[h>>2]|0;if((j|0)!=(k[G>>2]|0)){e=75;break b}if((j|0)!=(k[g+(r<<2)>>2]|0)?(k[(k[w>>2]|0)+(j+-1<<2)>>2]|0)>=(f|0):0){e=78;break b}k[h>>2]=j+1;q=k[G>>2]|0;ql(A,q+1|0,1.0);o=(k[A>>2]|0)+(q<<4)|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[(k[w>>2]|0)+(q<<2)>>2]=f;q=(k[A>>2]|0)+(j<<4)|0;o=M+(f<<4)|0;k[q>>2]=k[o>>2];k[q+4>>2]=k[o+4>>2];k[q+8>>2]=k[o+8>>2];k[q+12>>2]=k[o+12>>2];i[Y+f>>0]=0;e=e+1|0}while((e|0)<(b|0))}while(0);if((s|0)>=(Q|0))break a}if((e|0)==47)Oa(16047,15958,414,16152);else if((e|0)==49)Oa(16161,15958,415,16152);else if((e|0)==68)Oa(17199,17204,1020,17280);else if((e|0)==75)Oa(16249,15958,392,16348);else if((e|0)==78)Oa(16371,15958,393,16348);else if((e|0)==82)Oa(16249,15958,392,16348);else if((e|0)==85)Oa(16371,15958,393,16348)}while(0);if((k[c+16>>2]|0)==0?($=k[G>>2]|0,Z=k[I>>2]|0,(Z|0)>-1):0){g=k[H>>2]|0;e=Z;while(1){if(k[g+(e<<2)>>2]|0)break;f=e+-1|0;if((e|0)>0)e=f;else{e=f;break}}if((e|0)<(Z|0))do{e=e+1|0;k[g+(e<<2)>>2]=$}while((e|0)<(k[I>>2]|0))}if(!((O|0)==0|N^1))Pq(k[P+-4>>2]|0);if(!((W|0)==0|V^1))Pq(k[X+-4>>2]|0);if(_<<24>>24==0|(Y|0)==0){u=ba;return}Pq(k[Y+-4>>2]|0);u=ba;return}function cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=u;u=u+48|0;C=E+8|0;t=E;c=k[b+8>>2]|0;v=b+4|0;w=k[v>>2]|0;i[C>>0]=0;z=C+4|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;A=C+8|0;k[A>>2]=w;w=C+28|0;k[w>>2]=0;l=Oq((c<<2)+4|0)|0;k[C+12>>2]=l;if(!l){E=Kb(4)|0;cF(E);Cc(E|0,2032,79)}k[z>>2]=c;B=C+16|0;y=C+12|0;iF(l|0,0,(c<<2)+4|0)|0;if((c|0)<=-1)Oa(14697,13988,163,14058);if(c|0)iF(l|0,0,c<<2|0)|0;c=k[v>>2]|0;if((c|0)>0){h=k[b+24>>2]|0;j=k[b+12>>2]|0;g=k[b+16>>2]|0;if(!g){f=0;do{d=k[j+(f<<2)>>2]|0;f=f+1|0;e=k[j+(f<<2)>>2]|0;if((d|0)<(e|0)){c=d;do{s=l+(k[h+(c<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;c=c+1|0}while((c|0)!=(e|0));c=k[v>>2]|0}}while((f|0)<(c|0))}else{f=0;do{d=k[j+(f<<2)>>2]|0;s=k[g+(f<<2)>>2]|0;e=s+d|0;if((s|0)>0){c=d;do{s=l+(k[h+(c<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;c=c+1|0}while((c|0)<(e|0));c=k[v>>2]|0}f=f+1|0}while((f|0)<(c|0))}}c=k[z>>2]|0;k[t>>2]=0;s=t+4|0;k[s>>2]=0;Ef(t,c);c=k[z>>2]|0;g=k[y>>2]|0;a:do if((c|0)>0){f=k[t>>2]|0;e=0;c=0;while(1){r=g+(e<<2)|0;d=k[r>>2]|0;k[r>>2]=c;if((k[s>>2]|0)<=(e|0))break;k[f+(e<<2)>>2]=c;c=d+c|0;e=e+1|0;d=k[z>>2]|0;if((e|0)>=(d|0)){n=c;m=d;break a}}Oa(16605,15693,408,29907)}else{n=0;m=c}while(0);k[g+(m<<2)>>2]=n;r=C+20|0;ql(r,n,0.0);c=k[v>>2]|0;b:do if((c|0)>0){o=b+20|0;p=b+24|0;q=b+12|0;n=b+16|0;l=k[t>>2]|0;m=C+24|0;j=0;c:while(1){g=k[o>>2]|0;h=k[p>>2]|0;d=k[q>>2]|0;f=k[d+(j<<2)>>2]|0;e=k[n>>2]|0;if(!e)e=k[d+(j+1<<2)>>2]|0;else e=(k[e+(j<<2)>>2]|0)+f|0;if((f|0)<(e|0)){c=f;do{d=k[h+(c<<2)>>2]|0;if(!((d|0)>-1?(k[s>>2]|0)>(d|0):0))break c;b=l+(d<<2)|0;t=k[b>>2]|0;k[b>>2]=t+1;k[(k[m>>2]|0)+(t<<2)>>2]=j;b=g+(c<<4)|0;t=(k[r>>2]|0)+(t<<4)|0;k[t>>2]=k[b>>2];k[t+4>>2]=k[b+4>>2];k[t+8>>2]=k[b+8>>2];k[t+12>>2]=k[b+12>>2];c=c+1|0}while((c|0)<(e|0));c=k[v>>2]|0}j=j+1|0;if((j|0)>=(c|0)){D=m;x=l;break b}}Oa(16605,15693,408,29907)}else{D=C+24|0;x=k[t>>2]|0}while(0);t=a+12|0;c=k[t>>2]|0;k[t>>2]=k[y>>2];k[y>>2]=c;t=a+8|0;v=k[t>>2]|0;k[t>>2]=k[A>>2];k[A>>2]=v;v=a+4|0;A=k[v>>2]|0;k[v>>2]=k[z>>2];k[z>>2]=A;A=a+16|0;z=k[A>>2]|0;k[A>>2]=k[B>>2];k[B>>2]=z;z=a+20|0;A=k[z>>2]|0;k[z>>2]=k[r>>2];k[r>>2]=A;A=a+24|0;z=k[A>>2]|0;k[A>>2]=k[D>>2];k[D>>2]=z;z=a+28|0;A=k[z>>2]|0;k[z>>2]=k[w>>2];k[w>>2]=A;w=a+32|0;A=C+32|0;z=k[w>>2]|0;k[w>>2]=k[A>>2];k[A>>2]=z;if(x){Pq(k[x+-4>>2]|0);c=k[y>>2]|0}Pq(c);Pq(k[B>>2]|0);c=k[C+20>>2]|0;if(c|0)FA(c);c=k[D>>2]|0;if(!c){u=E;return a|0}FA(c);u=E;return a|0}function dm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+704|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=CA(704)|0;Dl(a,e);Pq(k[e+676>>2]|0);Pq(k[e+680>>2]|0);d=k[e+684>>2]|0;if(d|0)FA(d);d=k[e+688>>2]|0;if(d|0)FA(d);el(e+456|0);fl(e+136|0);hl(e+8|0);u=f;return a|0}function em(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=u;u=u+16|0;j=l;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+8>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){l=Kb(4)|0;cF(l);Cc(l|0,2032,79)}ak(a,d,c);e=k[b>>2]|0;c=k[e+8>>2]|0;d=k[i>>2]|0;f=k[d+8>>2]|0;if(!((k[g>>2]|0)==(c|0)?(k[h>>2]|0)==(f|0):0)){ak(a,c,f);c=k[g>>2]|0;f=k[h>>2]|0;e=k[b>>2]|0;d=k[i>>2]|0}if((c|f|0)<=-1)Oa(11919,12068,74,12145);c=aa(c,f)|0;if((c|0)<=0){p[j>>3]=1.0;i=j+8|0;p[i>>3]=0.0;fm(e,d,a,j);u=l;return}iF(k[a>>2]|0,0,c<<4|0)|0;p[j>>3]=1.0;i=j+8|0;p[i>>3]=0.0;fm(e,d,a,j);u=l;return}function fm(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;y=u;u=u+32|0;t=y+16|0;v=y;w=b+8|0;f=k[w>>2]|0;if((f|0)<=0){u=y;return}x=a+4|0;o=b+4|0;q=a+20|0;r=a+24|0;s=a+12|0;l=a+16|0;m=c+4|0;n=v+8|0;j=0;e=k[x>>2]|0;a=f;do{if((e|0)>0){i=0;do{uk(t,d,(k[b>>2]|0)+((aa(k[o>>2]|0,j)|0)+i<<4)|0);g=k[q>>2]|0;h=k[r>>2]|0;e=k[s>>2]|0;a=k[e+(i<<2)>>2]|0;f=k[l>>2]|0;if(!f)e=k[e+(i+1<<2)>>2]|0;else e=(k[f+(i<<2)>>2]|0)+a|0;if((a|0)<(e|0))do{uk(v,g+(a<<4)|0,t);z=k[c>>2]|0;f=(aa(k[m>>2]|0,j)|0)+(k[h+(a<<2)>>2]|0)|0;A=z+(f<<4)|0;p[A>>3]=+p[v>>3]+ +p[A>>3];f=z+(f<<4)+8|0;p[f>>3]=+p[n>>3]+ +p[f>>3];a=a+1|0}while((a|0)<(e|0));i=i+1|0;e=k[x>>2]|0}while((i|0)<(e|0));a=k[w>>2]|0}j=j+1|0}while((j|0)<(a|0));u=y;return}function gm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function hm(a){a=a|0;return 480}function im(a){a=a|0;if(!a)return;hl(a+8|0);EA(a);return}function jm(a){a=a|0;var b=0,c=0,d=0;d=CA(128)|0;k[d>>2]=a;i[d+8>>0]=0;k[d+12>>2]=0;a=d+20|0;i[a>>0]=0;k[d+24>>2]=-1;b=d+28|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;pl(a,0,0);a=d+104|0;b=d+56|0;c=b+48|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(c|0));p[a>>3]=1.0;i[d+112>>0]=1;i[d+120>>0]=0;i[d+121>>0]=0;return d|0}function km(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function lm(a){a=a|0;var b=0,c=0,d=0;if(!(i[a+120>>0]|0)){mm(a);return}c=a+121|0;if(i[c>>0]|0)return;d=(k[a>>2]|0)+664|0;nm(d);b=a+8|0;if(!(i[a+112>>0]|0))xm(b,d);else wm(b,d);if(!(i[b>>0]|0))Oa(17611,17319,109,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}function mm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=a+120|0;i[b>>0]=0;c=a+121|0;i[c>>0]=0;d=(k[a>>2]|0)+664|0;nm(d);e=a+8|0;f=a+112|0;om(e,d,(i[f>>0]|0)!=0);if(!(i[e>>0]|0))Oa(17611,17319,109,17666);a=a+12|0;if(k[a>>2]|0)return;i[b>>0]=1;if(!(i[f>>0]|0))xm(e,d);else wm(e,d);if(!(i[e>>0]|0))Oa(17611,17319,109,17666);if(k[a>>2]|0)return;i[c>>0]=1;return}function nm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;b=k[a+16>>2]|0;if(!b)return;p=a+12|0;d=k[p>>2]|0;o=d+4|0;c=k[o>>2]|0;n=a+16|0;e=k[b>>2]|0;k[o>>2]=e;o=a+4|0;if((k[o>>2]|0)>1){l=a+24|0;m=a+20|0;j=1;g=b;do{i=j;j=j+1|0;h=c;c=k[d+(j<<2)>>2]|0;f=k[g+(i<<2)>>2]|0;if((h|0)>(e|0)&(f|0)>0){f=0;b=e;while(1){g=f+h|0;e=k[l>>2]|0;k[e+(b+f<<2)>>2]=k[e+(g<<2)>>2];b=k[m>>2]|0;g=b+(g<<4)|0;b=b+((k[d+(i<<2)>>2]|0)+f<<4)|0;k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];b=f+1|0;g=k[n>>2]|0;d=k[g+(i<<2)>>2]|0;if((b|0)>=(d|0))break;g=k[p>>2]|0;f=b;d=g;b=k[g+(i<<2)>>2]|0}b=k[p>>2]|0;f=d;e=k[b+(i<<2)>>2]|0;d=b;b=g}e=f+e|0;k[d+(j<<2)>>2]=e}while((j|0)<(k[o>>2]|0))}Pq(b);k[n>>2]=0;l=a+20|0;ql(l,k[(k[p>>2]|0)+(k[o>>2]<<2)>>2]|0,0.0);g=a+32|0;h=k[a+28>>2]|0;if((k[g>>2]|0)<=(h|0))return;i=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(i|0,0,h<<4|0)|0;j=DA(h>>>0>1073741823?-1:h<<2)|0;if((h|0)>0){f=k[l>>2]|0;nF(i|0,f|0,h<<4|0)|0;b=a+24|0;d=k[b>>2]|0;nF(j|0,d|0,h<<2|0)|0;c=d;e=f}else{f=k[l>>2]|0;b=a+24|0;d=k[b>>2]|0;c=d;e=f}k[l>>2]=i;k[b>>2]=j;k[g>>2]=h;if(c|0)FA(d);if(!e)return;FA(f);return}function om(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+48|0;h=j+4|0;f=j;g=k[b+8>>2]|0;if((g|0)!=(k[b+4>>2]|0))Oa(17300,17319,232,17410);i[h>>0]=0;d=h+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[h+8>>2]=g;k[h+28>>2]=0;e=Oq((g<<2)+4|0)|0;k[h+12>>2]=e;if(!e){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[d>>2]=g;iF(e|0,0,(g<<2)+4|0)|0;pm(a,b,f,h);qm(a,k[f>>2]|0,c);Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);a=k[h+20>>2]|0;if(a|0)FA(a);a=k[h+24>>2]|0;if(!a){u=j;return}FA(a);u=j;return}function pm(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,j=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;j=o;n=k[b+8>>2]|0;if((n|0)!=(k[b+4>>2]|0))Oa(17300,17319,652,17425);k[c>>2]=d;i[j>>0]=0;c=j+4|0;k[c>>2]=-1;e=j+8|0;f=j+12|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;e=Oq(4)|0;k[f>>2]=e;if(!e){o=Kb(4)|0;cF(o);Cc(o|0,2032,79)}k[c>>2]=0;l=b+8|0;g=k[l>>2]|0;m=b+4|0;h=k[m>>2]|0;k[e>>2]=0;if((g|0)!=(h|0))Oa(17434,17499,64,17589);sm(b,j,0);e=a+80|0;rm(o+36|0,j,e);Pq(k[f>>2]|0);Pq(k[j+16>>2]|0);c=k[j+20>>2]|0;if(c|0)FA(c);c=k[j+24>>2]|0;if(c|0)FA(c);c=k[a+84>>2]|0;if((c|0)>0){k[j>>2]=0;g=j+4|0;k[g>>2]=0;Ef(j,c);f=k[g>>2]|0;h=k[j>>2]|0;if((f|0)>0){e=k[e>>2]|0;c=0;do{k[h+(k[e+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(f|0));f=k[g>>2]|0}c=a+72|0;e=a+76|0;if((k[e>>2]|0)!=(f|0)?(Ng(c,f,1),(k[e>>2]|0)!=(f|0)):0)Oa(12160,12207,721,12285);e=k[c>>2]|0;if((f|0)>0){c=0;do{k[e+(c<<2)>>2]=k[h+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[j>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}else{c=a+76|0;if(k[c>>2]|0){e=a+72|0;f=k[e>>2]|0;if(f|0)Pq(k[f+-4>>2]|0);k[e>>2]=0}k[c>>2]=0}pl(d,n,n);if((k[l>>2]|0)!=(k[m>>2]|0))Oa(17434,17499,64,17589);if((k[d+8>>2]|0)==(k[d+4>>2]|0)){vm(b,d,k[a+72>>2]|0);u=o;return}else Oa(17434,17499,64,17589)}function qm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;B=k[b+8>>2]|0;pl(a+12|0,B,B);w=a+56|0;Ef(w,B);C=a+64|0;Ef(C,B);if(B>>>0>1073741823){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}f=B<<2;if(f>>>0>=131073){d=Oq(f+16|0)|0;e=d+16&-16;if(!d){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}k[e+-4>>2]=d;if(!e){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}else y=e}else{y=u;u=u+((1*(f+15|0)|0)+15&-16)|0;y=y+15&-16}z=y;t=y;x=f>>>0>131072;v=(B|0)>0;a:do if(v){p=a+60|0;q=a+68|0;r=k[b+24>>2]|0;s=k[b+12>>2]|0;m=k[b+16>>2]|0;b:do if(!m){g=0;c:while(1){if((k[p>>2]|0)<=(g|0)){d=28;break}j=k[w>>2]|0;k[j+(g<<2)>>2]=-1;k[t+(g<<2)>>2]=g;if((k[q>>2]|0)<=(g|0)){d=30;break}l=k[C>>2]|0;k[l+(g<<2)>>2]=0;d=k[s+(g<<2)>>2]|0;h=g;g=g+1|0;m=k[s+(g<<2)>>2]|0;if((d|0)<(m|0))do{e=k[r+(d<<2)>>2]|0;if((e|0)<(h|0)?(o=t+(e<<2)|0,(k[o>>2]|0)!=(h|0)):0){b=o;do{if((e|0)<=-1){d=37;break c}if((k[p>>2]|0)<=(e|0)){d=37;break c}f=j+(e<<2)|0;if((k[f>>2]|0)==-1)k[f>>2]=h;if((k[q>>2]|0)<=(e|0)){d=41;break c}n=l+(e<<2)|0;k[n>>2]=(k[n>>2]|0)+1;k[b>>2]=h;if((k[p>>2]|0)<=(e|0)){d=43;break c}e=k[f>>2]|0;b=t+(e<<2)|0}while((k[b>>2]|0)!=(h|0))}d=d+1|0}while((d|0)<(m|0));if((g|0)>=(B|0))break b}if((d|0)==28)Oa(16605,15693,408,29907);else if((d|0)==30)Oa(16605,15693,408,29907);else if((d|0)==37)Oa(16605,15693,408,29907);else if((d|0)==41)Oa(16605,15693,408,29907);else if((d|0)==43)Oa(16605,15693,408,29907)}else{g=0;d:while(1){if((k[p>>2]|0)<=(g|0)){d=28;break}j=k[w>>2]|0;k[j+(g<<2)>>2]=-1;k[t+(g<<2)>>2]=g;if((k[q>>2]|0)<=(g|0)){d=30;break}l=k[C>>2]|0;k[l+(g<<2)>>2]=0;d=k[s+(g<<2)>>2]|0;o=k[m+(g<<2)>>2]|0;h=o+d|0;if((o|0)>0)do{e=k[r+(d<<2)>>2]|0;if((e|0)<(g|0)?(n=t+(e<<2)|0,(k[n>>2]|0)!=(g|0)):0){b=n;do{if((e|0)<=-1){d=37;break d}if((k[p>>2]|0)<=(e|0)){d=37;break d}f=j+(e<<2)|0;if((k[f>>2]|0)==-1)k[f>>2]=g;if((k[q>>2]|0)<=(e|0)){d=41;break d}o=l+(e<<2)|0;k[o>>2]=(k[o>>2]|0)+1;k[b>>2]=g;if((k[p>>2]|0)<=(e|0)){d=43;break d}e=k[f>>2]|0;b=t+(e<<2)|0}while((k[b>>2]|0)!=(g|0))}d=d+1|0}while((d|0)<(h|0));g=g+1|0;if((g|0)>=(B|0))break b}if((d|0)==28)Oa(16605,15693,408,29907);else if((d|0)==30)Oa(16605,15693,408,29907);else if((d|0)==37)Oa(16605,15693,408,29907);else if((d|0)==41)Oa(16605,15693,408,29907);else if((d|0)==43)Oa(16605,15693,408,29907)}while(0);g=k[a+24>>2]|0;k[g>>2]=0;if(v){b=a+68|0;f=(c^1)&1;d=0;e=0;while(1){if((k[b>>2]|0)<=(d|0))break;e=e+f+(k[(k[C>>2]|0)+(d<<2)>>2]|0)|0;d=d+1|0;k[g+(d<<2)>>2]=e;if((d|0)>=(B|0)){A=g;break a}}Oa(16605,15693,408,29907)}else A=g}else{A=k[a+24>>2]|0;k[A>>2]=0}while(0);ql(a+32|0,k[A+(B<<2)>>2]|0,0.0);i[a>>0]=1;k[a+4>>2]=0;i[a+9>>0]=1;i[a+8>>0]=0;if((y|0)==0|x^1){u=D;return}Pq(k[z+-4>>2]|0);u=D;return}function rm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+48|0;f=g;i[f>>0]=0;a=f+4|0;k[a>>2]=-1;e=f+8|0;d=f+12|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;e=Oq(4)|0;k[d>>2]=e;if(!e){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[a>>2]=0;k[e>>2]=0;tm(b,f);um(f,c);Pq(k[d>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function sm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=u;u=u+16|0;x=A;y=k[a+8>>2]|0;k[x>>2]=0;z=x+4|0;k[z>>2]=0;Ef(x,y);d=k[z>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[x>>2]|0,0,d<<2|0)|0;pl(b,y,y);t=(y|0)>0;a:do if(t){m=(c|0)!=0;n=k[a+24>>2]|0;o=k[a+12>>2]|0;q=k[a+16>>2]|0;r=(q|0)==0;s=k[x>>2]|0;j=0;b:while(1){if(m)i=k[c+(j<<2)>>2]|0;else i=j;d=k[o+(j<<2)>>2]|0;if(r)l=k[o+(j+1<<2)>>2]|0;else l=(k[q+(j<<2)>>2]|0)+d|0;c:do if((d|0)<(l|0)){g=(i|0)>-1;if(m){f=d;while(1){e=k[n+(f<<2)>>2]|0;d=k[c+(e<<2)>>2]|0;if((e|0)==(j|0))if((d|0)>-1?(k[z>>2]|0)>(d|0):0)v=24;else{v=38;break b}else if((e|0)>(j|0)){if(!((d|0)>-1?(k[z>>2]|0)>(d|0):0)){v=41;break b}w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1;if(g&(k[z>>2]|0)>(i|0)){d=i;v=24}else{v=43;break b}}if((v|0)==24){v=0;w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1}f=f+1|0;if((f|0)>=(l|0))break c}}h=(j|0)>-1;if(g)e=d;else{f=s+(j<<2)|0;while(1){e=k[n+(d<<2)>>2]|0;if((e|0)!=(j|0)){if((e|0)>(j|0)){v=40;break b}}else{if(!(h&(k[z>>2]|0)>(j|0))){v=38;break b}k[f>>2]=(k[f>>2]|0)+1}d=d+1|0;if((d|0)>=(l|0))break c}}do{d=k[n+(e<<2)>>2]|0;if((d|0)==(j|0))if(h&(k[z>>2]|0)>(j|0)){d=j;v=33}else{v=38;break b}else if((d|0)>(j|0)){if(!((d|0)>-1?(k[z>>2]|0)>(d|0):0)){v=41;break b}w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1;if((k[z>>2]|0)>(i|0)){d=i;v=33}else{v=43;break b}}if((v|0)==33){v=0;w=s+(d<<2)|0;k[w>>2]=(k[w>>2]|0)+1}e=e+1|0}while((e|0)<(l|0))}while(0);j=j+1|0;if((j|0)>=(y|0))break a}if((v|0)==38)Oa(16605,15693,408,29907);else if((v|0)==40){if(!((e|0)>-1?(k[z>>2]|0)>(e|0):0))Oa(16605,15693,408,29907);w=s+(e<<2)|0;k[w>>2]=(k[w>>2]|0)+1;Oa(16605,15693,408,29907)}else if((v|0)==41)Oa(16605,15693,408,29907);else if((v|0)==43)Oa(16605,15693,408,29907)}while(0);f=k[z>>2]|0;if(f){if((f|0)<=0)Oa(13148,13216,413,13284);g=k[x>>2]|0;d=k[g>>2]|0;if((f|0)!=1){e=1;do{d=(k[g+(e<<2)>>2]|0)+d|0;e=e+1|0}while((e|0)<(f|0))}}else d=0;ql(b+20|0,d,0.0);e=b+12|0;f=k[e>>2]|0;k[f>>2]=0;d:do if(t){g=k[x>>2]|0;d=0;h=0;do{if((k[z>>2]|0)<=(d|0)){v=51;break}h=(k[g+(d<<2)>>2]|0)+h|0;d=d+1|0;k[f+(d<<2)>>2]=h}while((d|0)<(y|0));if((v|0)==51)Oa(16605,15693,408,29907);if(t){e=k[e>>2]|0;f=k[x>>2]|0;d=0;do{if((k[z>>2]|0)<=(d|0)){v=56;break}k[f+(d<<2)>>2]=k[e+(d<<2)>>2];d=d+1|0}while((d|0)<(y|0));if((v|0)==56)Oa(16605,15693,408,29907);if(t){t=a+20|0;v=a+24|0;w=a+12|0;q=a+16|0;r=(c|0)==0;s=b+24|0;m=b+20|0;l=0;e:while(1){n=k[t>>2]|0;o=k[v>>2]|0;d=k[w>>2]|0;f=k[d+(l<<2)>>2]|0;e=k[q>>2]|0;if(!e)j=k[d+(l+1<<2)>>2]|0;else j=(k[e+(l<<2)>>2]|0)+f|0;f:do if((f|0)<(j|0)){i=c+(l<<2)|0;if(!r)while(1){d=k[o+(f<<2)>>2]|0;g=k[i>>2]|0;h=k[c+(d<<2)>>2]|0;if((d|0)!=(l|0)){if((d|0)>(l|0)){if(!((g|0)>-1?(k[z>>2]|0)>(g|0):0)){v=82;break e}d=k[x>>2]|0;e=d+(g<<2)|0;b=k[e>>2]|0;k[e>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=h;e=n+(f<<4)|0;b=(k[m>>2]|0)+(b<<4)|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];if(!((h|0)>-1?(k[z>>2]|0)>(h|0):0)){v=84;break e}a=d+(h<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=g;B=-+p[n+(f<<4)+8>>3];a=k[m>>2]|0;p[a+(b<<4)>>3]=+p[e>>3];p[a+(b<<4)+8>>3]=B}}else{if(!((h|0)>-1?(k[z>>2]|0)>(h|0):0)){v=78;break e}a=(k[x>>2]|0)+(h<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=h;a=n+(f<<4)|0;b=(k[m>>2]|0)+(b<<4)|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2]}f=f+1|0;if((f|0)>=(j|0))break f}h=(l|0)>-1;d=f;do{e=k[o+(d<<2)>>2]|0;if((e|0)!=(l|0)){if((e|0)>(l|0)){if((k[z>>2]|0)<=(l|0)){v=82;break e}f=k[x>>2]|0;g=f+(l<<2)|0;b=k[g>>2]|0;k[g>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=e;g=n+(d<<4)|0;b=(k[m>>2]|0)+(b<<4)|0;k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];if(!((e|0)>-1?(k[z>>2]|0)>(e|0):0)){v=84;break e}a=f+(e<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=l;B=-+p[n+(d<<4)+8>>3];a=k[m>>2]|0;p[a+(b<<4)>>3]=+p[g>>3];p[a+(b<<4)+8>>3]=B}}else{if(!(h&(k[z>>2]|0)>(l|0))){v=78;break e}a=(k[x>>2]|0)+(l<<2)|0;b=k[a>>2]|0;k[a>>2]=b+1;k[(k[s>>2]|0)+(b<<2)>>2]=l;a=n+(d<<4)|0;b=(k[m>>2]|0)+(b<<4)|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2]}d=d+1|0}while((d|0)<(j|0))}while(0);l=l+1|0;if((l|0)>=(y|0))break d}if((v|0)==78)Oa(16605,15693,408,29907);else if((v|0)==82)Oa(16605,15693,408,29907);else if((v|0)==84)Oa(16605,15693,408,29907)}}}while(0);d=k[x>>2]|0;if(!d){u=A;return}Pq(k[d+-4>>2]|0);u=A;return}function tm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+64|0;o=p+16|0;m=p;i[o>>0]=0;c=o+4|0;k[c>>2]=-1;d=o+8|0;n=o+12|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;e=Oq(4)|0;k[n>>2]=e;if(!e){p=Kb(4)|0;cF(p);Cc(p|0,2032,79)}k[c>>2]=0;l=o+16|0;k[e>>2]=0;i[m>>0]=0;k[m+4>>2]=a;Fl(o,m)|0;g=k[d>>2]|0;if((g|0)>0){h=k[o+20>>2]|0;j=k[o+12>>2]|0;d=k[o+16>>2]|0;if(!d){c=0;do{d=k[j+(c<<2)>>2]|0;c=c+1|0;e=k[j+(c<<2)>>2]|0;if((e|0)>(d|0))iF(h+(d<<4)|0,0,e-d<<4|0)|0}while((c|0)<(g|0))}else{c=0;do{e=k[j+(c<<2)>>2]|0;q=k[d+(c<<2)>>2]|0;f=q+e|0;if((q|0)>0){q=e+1|0;iF(h+(e<<4)|0,0,((f|0)>(q|0)?f:q)-e<<4|0)|0}c=c+1|0}while((c|0)<(g|0))}}i[m>>0]=0;k[m+4>>2]=o;k[m+8>>2]=a;if((k[o+8>>2]|0)!=(k[a+8>>2]|0))Oa(14550,14607,110,14683);if((k[o+4>>2]|0)!=(k[a+4>>2]|0))Oa(14550,14607,110,14683);Tl(b,m)|0;Pq(k[n>>2]|0);Pq(k[l>>2]|0);c=k[o+20>>2]|0;if(c|0)FA(c);c=k[o+24>>2]|0;if(!c){u=p;return}FA(c);u=p;return}function um(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;ka=u;u=u+16|0;Z=ka;ia=k[a+4>>2]|0;e=~~(+Q(+(+(ia|0)))*10.0);e=(e|0)>16?e:16;m=ia+-2|0;m=(e|0)<(m|0)?e:m;e=k[a+16>>2]|0;if(e)if(ia){if((ia|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((ia|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(ia|0))}}else c=0;else{c=k[a+12>>2]|0;c=(k[c+(ia<<2)>>2]|0)-(k[c>>2]|0)|0}ha=ia+1|0;Ef(b,ha);X=c+(ia<<1)+((c|0)/5|0)|0;ql(a+20|0,X,0.0);if(((ia<<3)+8|0)>>>0>1073741823){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}d=ia<<5;if((d+32|0)>>>0>=131073){d=Oq(d+48|0)|0;e=d+16&-16;if(!d){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}k[e+-4>>2]=d;if(!e){ka=Kb(4)|0;cF(ka);Cc(ka|0,2032,79)}}else{e=u;u=u+((1*(d+47|0)|0)+15&-16)|0;e=e+15&-16}ba=e;O=e;ca=ha<<5>>>0>131072;Y=O+(ha<<2)|0;P=ha<<1;da=O+(P<<2)|0;R=ha*3|0;ea=O+(R<<2)|0;S=O+(ha<<2<<2)|0;T=O+(ha*5<<2)|0;fa=O+(ha*6<<2)|0;U=O+(ha*7<<2)|0;V=k[b>>2]|0;ga=k[a+12>>2]|0;M=k[a+24>>2]|0;N=(ia|0)>0;if(N){d=0;do{W=d;d=d+1|0;k[O+(W<<2)>>2]=(k[ga+(d<<2)>>2]|0)-(k[ga+(W<<2)>>2]|0)}while((d|0)!=(ia|0))}k[O+(ia<<2)>>2]=0;W=(ia|0)<0;if(!W){d=0;do{k[ea+(d<<2)>>2]=-1;k[V+(d<<2)>>2]=-1;k[da+(d<<2)>>2]=-1;k[U+(d<<2)>>2]=-1;k[Y+(d<<2)>>2]=1;k[fa+(d<<2)>>2]=1;k[S+(d<<2)>>2]=0;k[T+(d<<2)>>2]=k[O+(d<<2)>>2];d=d+1|0}while((d|0)!=(ha|0))}a:do if(N){d=0;do{a=fa+(d<<2)|0;if(k[a>>2]|0)k[a>>2]=1;d=d+1|0}while((d|0)!=(ia|0));if(N){j=-2-ia|0;l=Y+(ia<<2)|0;d=0;a=0;do{i=a;b:while(1){h=ga+(i<<2)|0;f=k[h>>2]|0;a=i+1|0;g=k[ga+(a<<2)>>2]|0;if((f|0)>=(g|0)){_=29;break}while(1){if((k[M+(f<<2)>>2]|0)==(i|0))break;f=f+1|0;if((f|0)>=(g|0)){_=29;break b}}f=k[T+(i<<2)>>2]|0;k[Z>>2]=f;if((f|0)==1){_=31;break}if((f|0)>(m|0)){_=33;break}f=ea+(f<<2)|0;g=k[f>>2]|0;if((g|0)==-1)f=-1;else{k[V+(g<<2)>>2]=i;f=k[f>>2]|0}k[da+(i<<2)>>2]=f;k[ea+(k[Z>>2]<<2)>>2]=i;if((a|0)<(ia|0))i=a;else break a}if((_|0)==29){k[Z>>2]=k[T+(i<<2)>>2];_=33}else if((_|0)==31){_=0;k[S+(i<<2)>>2]=-2;k[h>>2]=-1;k[fa+(i<<2)>>2]=0}if((_|0)==33){_=0;k[Y+(i<<2)>>2]=0;k[S+(i<<2)>>2]=-1;k[h>>2]=j;k[l>>2]=(k[l>>2]|0)+1}d=d+1|0}while((a|0)<(ia|0))}else d=0}else d=0;while(0);k[S+(ia<<2)>>2]=-2;k[ga+(ia<<2)>>2]=-1;k[fa+(ia<<2)>>2]=0;if((d|0)<(ia|0)){L=N^1;z=2;K=0;f=0;while(1){c:do if((f|0)<(ia|0))while(1){a=k[ea+(f<<2)>>2]|0;if((a|0)!=-1)break c;f=f+1|0;if((f|0)>=(ia|0)){a=-1;break}}else a=-1;while(0);g=da+(a<<2)|0;h=k[g>>2]|0;if((h|0)==-1)g=-1;else{k[V+(h<<2)>>2]=-1;g=k[g>>2]|0}k[ea+(f<<2)>>2]=g;y=S+(a<<2)|0;x=k[y>>2]|0;J=Y+(a<<2)|0;C=k[J>>2]|0;d=C+d|0;d:do if(!((f+c|0)<(X|0)|(x|0)<1)){if(N){i=0;do{g=ga+(i<<2)|0;I=k[g>>2]|0;h=M+(I<<2)|0;if((I|0)>-1){k[g>>2]=k[h>>2];k[h>>2]=-2-i}i=i+1|0}while((i|0)!=(ia|0));i=0;g=0}else{i=0;g=0}e:while(1){do{if((g|0)>=(c|0)){c=i;break d}h=g;g=g+1|0;h=-2-(k[M+(h<<2)>>2]|0)|0}while((h|0)<=-1);l=ga+(h<<2)|0;k[M+(i<<2)>>2]=k[l>>2];k[l>>2]=i;i=i+1|0;l=O+(h<<2)|0;if((k[l>>2]|0)>1)h=0;else continue;while(1){j=g+1|0;k[M+(i<<2)>>2]=k[M+(g<<2)>>2];g=h+1|0;i=i+1|0;if((g|0)<((k[l>>2]|0)+-1|0)){h=g;g=j}else{g=j;continue e}}}}while(0);k[J>>2]=0-C;H=ga+(a<<2)|0;g=k[H>>2]|0;I=(x|0)==0?g:c;G=O+(a<<2)|0;if((x|0)<0){j=0;E=I}else{v=-2-a|0;w=x+1|0;t=1;i=I;h=0;while(1){if((t|0)>(x|0)){s=a;r=(k[G>>2]|0)-x|0;j=g}else{j=k[M+(g<<2)>>2]|0;s=j;r=k[O+(j<<2)>>2]|0;j=k[ga+(j<<2)>>2]|0;g=g+1|0}if((r|0)>=1){q=1;while(1){o=k[M+(j<<2)>>2]|0;j=j+1|0;l=Y+(o<<2)|0;p=k[l>>2]|0;if((p|0)>=1){k[l>>2]=0-p;k[M+(i<<2)>>2]=o;n=da+(o<<2)|0;l=k[n>>2]|0;if((l|0)==-1){m=V+(o<<2)|0;l=-1}else{m=V+(o<<2)|0;k[V+(l<<2)>>2]=k[m>>2];l=k[n>>2]|0}F=(k[m>>2]|0)==-1;k[O+((F?R:P)<<2)+(k[(F?T+(o<<2)|0:m)>>2]<<2)>>2]=l;i=i+1|0;h=p+h|0}if((q|0)==(r|0))break;else q=q+1|0}}if((s|0)!=(a|0)){k[ga+(s<<2)>>2]=v;k[fa+(s<<2)>>2]=0}if((t|0)==(w|0)){j=h;E=i;break}else t=t+1|0}}F=(x|0)!=0;B=T+(a<<2)|0;k[B>>2]=j;k[H>>2]=I;k[G>>2]=E-I;k[y>>2]=-2;g=(z|0)>1&(z+K|0)>-1;if(g|L)A=g?z:2;else{g=0;do{h=fa+(g<<2)|0;if(k[h>>2]|0)k[h>>2]=1;g=g+1|0}while((g|0)!=(ia|0));A=2}D=(E|0)>(I|0);if(D){o=I;do{g=k[M+(o<<2)>>2]|0;p=k[S+(g<<2)>>2]|0;if((p|0)>=1){q=k[Y+(g<<2)>>2]|0;r=q+A|0;n=ga+(g<<2)|0;g=k[n>>2]|0;m=g;do{h=k[M+(m<<2)>>2]|0;l=fa+(h<<2)|0;i=k[l>>2]|0;do if((i|0)<(A|0)){if(!i)break;g=r+(k[T+(h<<2)>>2]|0)|0;_=84}else{g=i+q|0;_=84}while(0);if((_|0)==84){_=0;k[l>>2]=g;g=k[n>>2]|0}m=m+1|0}while((m|0)<(g+p|0))}o=o+1|0}while((o|0)!=(E|0));if(D){z=-2-a|0;i=C;y=I;do{x=k[M+(y<<2)>>2]|0;v=ga+(x<<2)|0;w=k[v>>2]|0;g=S+(x<<2)|0;C=k[g>>2]|0;t=C+w|0;k[Z>>2]=0;if((C|0)>0){h=0;l=w;p=w;do{n=k[M+(p<<2)>>2]|0;o=fa+(n<<2)|0;m=k[o>>2]|0;do if(m){m=m-A|0;if((m|0)>0){k[Z>>2]=(k[Z>>2]|0)+m;k[M+(l<<2)>>2]=n;h=n+h|0;l=l+1|0;break}else{k[ga+(n<<2)>>2]=z;k[o>>2]=0;break}}while(0);p=p+1|0}while((p|0)<(t|0));q=l}else{h=0;q=w}r=1-w|0;k[g>>2]=r+q;s=O+(x<<2)|0;p=(k[s>>2]|0)+w|0;if((t|0)<(p|0)){m=q;o=t;do{l=k[M+(o<<2)>>2]|0;n=k[Y+(l<<2)>>2]|0;if((n|0)>=1){k[Z>>2]=(k[Z>>2]|0)+n;k[M+(m<<2)>>2]=l;h=l+h|0;m=m+1|0}o=o+1|0}while((o|0)!=(p|0))}else m=q;l=k[Z>>2]|0;if(!l){k[v>>2]=z;C=Y+(x<<2)|0;h=k[C>>2]|0;k[C>>2]=0;i=i-h|0;d=d-h|0;j=h+j|0;h=-1}else{C=T+(x<<2)|0;g=k[C>>2]|0;k[C>>2]=(l|0)<(g|0)?l:g;C=M+(q<<2)|0;k[M+(m<<2)>>2]=k[C>>2];g=M+(w<<2)|0;k[C>>2]=k[g>>2];k[g>>2]=a;k[s>>2]=r+m;h=(h|0)%(ia|0)|0;g=U+(h<<2)|0;k[da+(x<<2)>>2]=k[g>>2];k[g>>2]=x;g=V+(x<<2)|0}k[g>>2]=h;y=y+1|0}while((y|0)!=(E|0));w=i;v=j}else{w=C;v=j}}else{w=C;v=j}k[B>>2]=v;K=(K|0)<(v|0)?v:K;g=K+A|0;h=(g|0)>1&(g+K|0)>-1;if(h|L)g=h?g:2;else{g=0;do{h=fa+(g<<2)|0;if(k[h>>2]|0)k[h>>2]=1;g=g+1|0}while((g|0)!=(ia|0));g=2}if(D){t=I;do{h=k[M+(t<<2)>>2]|0;f:do if((k[Y+(h<<2)>>2]|0)<=-1){C=U+(k[V+(h<<2)>>2]<<2)|0;h=k[C>>2]|0;k[C>>2]=-1;if((h|0)==-1)break;while(1){p=da+(h<<2)|0;i=k[p>>2]|0;if((i|0)==-1)break f;q=k[O+(h<<2)>>2]|0;r=k[S+(h<<2)>>2]|0;l=ga+(h<<2)|0;j=k[l>>2]|0;s=q+-1|0;if((j|0)<(s+j|0)){i=j;do{i=i+1|0;k[fa+(k[M+(i<<2)>>2]<<2)>>2]=g}while((i|0)<(s+(k[l>>2]|0)|0));i=k[p>>2]|0;if((i|0)==-1)break}n=-2-h|0;o=Y+(h<<2)|0;g:do{m=da+(h<<2)|0;h=i;h:while(1){if((k[O+(h<<2)>>2]|0)!=(q|0))break;j=ga+(h<<2)|0;i=k[j>>2]|0;if((k[S+(h<<2)>>2]|0)!=(r|0))break;l=s+i|0;while(1){if((i|0)>=(l|0))break;i=i+1|0;if((k[fa+(k[M+(i<<2)>>2]<<2)>>2]|0)!=(g|0))break h}k[j>>2]=n;C=Y+(h<<2)|0;k[o>>2]=(k[o>>2]|0)+(k[C>>2]|0);k[C>>2]=0;k[S+(h<<2)>>2]=-1;h=k[da+(h<<2)>>2]|0;k[m>>2]=h;if((h|0)==-1)break g}i=k[da+(h<<2)>>2]|0}while((i|0)!=-1);h=k[p>>2]|0;g=g+1|0;if((h|0)==-1)break f}g=g+1|0}while(0);t=t+1|0}while((t|0)!=(E|0));if(D){o=ia-d|0;h=I;n=I;do{m=k[M+(n<<2)>>2]|0;i=Y+(m<<2)|0;j=k[i>>2]|0;if((j|0)<=-1){k[i>>2]=0-j;l=T+(m<<2)|0;i=j+v+(k[l>>2]|0)|0;j=j+o|0;i=(j|0)<(i|0)?j:i;k[Z>>2]=i;i=ea+(i<<2)|0;j=k[i>>2]|0;if((j|0)==-1)i=-1;else{k[V+(j<<2)>>2]=m;i=k[i>>2]|0}k[da+(m<<2)>>2]=i;k[V+(m<<2)>>2]=-1;k[ea+(k[Z>>2]<<2)>>2]=m;D=k[Z>>2]|0;k[l>>2]=D;k[M+(h<<2)>>2]=m;h=h+1|0;f=(D|0)<(f|0)?D:f}n=n+1|0}while((n|0)!=(E|0))}else h=I}else h=I;k[J>>2]=w;J=h-I|0;k[G>>2]=J;if(!J){k[H>>2]=-1;k[fa+(a<<2)>>2]=0}if((ia|0)<=(d|0))break;else{z=g;c=F?h:c}}}if(N){c=0;do{_=ga+(c<<2)|0;k[_>>2]=-2-(k[_>>2]|0);c=c+1|0}while((c|0)!=(ia|0))}if(!W){iF(ba+((ia*12|0)+12)|0,-1,(ia<<2)+4|0)|0;c=ia;while(1){if((k[Y+(c<<2)>>2]|0)<=0){_=ga+(c<<2)|0;k[da+(c<<2)>>2]=k[ea+(k[_>>2]<<2)>>2];k[ea+(k[_>>2]<<2)>>2]=c}if((c|0)>0)c=c+-1|0;else{c=ia;break}}while(1){if((k[Y+(c<<2)>>2]|0)>=1?($=ga+(c<<2)|0,aa=k[$>>2]|0,(aa|0)!=-1):0){k[da+(c<<2)>>2]=k[ea+(aa<<2)>>2];k[ea+(k[$>>2]<<2)>>2]=c}if((c|0)>0)c=c+-1|0;else break}if(!W?(ja=k[b>>2]|0,ja|0):0){c=0;i=0;do{i:do if((k[ga+(i<<2)>>2]|0)==-1){k[fa>>2]=i;f=0;d=i;while(1){a=ea+(d<<2)|0;g=k[a>>2]|0;if((g|0)==-1){h=f+-1|0;a=c+1|0;c=ja+(c<<2)|0}else{k[a>>2]=k[da+(g<<2)>>2];aa=f+1|0;h=aa;a=c;d=g;c=fa+(aa<<2)|0}k[c>>2]=d;if((h|0)<=-1){c=a;break i}c=a;f=h;d=k[fa+(h<<2)>>2]|0}}while(0);i=i+1|0}while((i|0)!=(ha|0))}}Jh(b,ia,ia,1);if((e|0)==0|ca^1){u=ka;return}Pq(k[ba+-4>>2]|0);u=ka;return}function vm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=u;u=u+16|0;x=A;y=k[a+8>>2]|0;k[x>>2]=0;z=x+4|0;k[z>>2]=0;Ef(x,y);d=k[z>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[x>>2]|0,0,d<<2|0)|0;pl(b,y,y);r=(y|0)>0;a:do if(r){i=k[a+24>>2]|0;j=k[a+12>>2]|0;l=k[a+16>>2]|0;m=(l|0)==0;n=k[x>>2]|0;b:do if(!c){f=0;c:while(1){d=k[j+(f<<2)>>2]|0;if(m)g=k[j+(f+1<<2)>>2]|0;else g=(k[l+(f<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{e=k[i+(d<<2)>>2]|0;if((e|0)>=(f|0)){if(!((e|0)>-1?(k[z>>2]|0)>(e|0):0))break c;w=n+(e<<2)|0;k[w>>2]=(k[w>>2]|0)+1}d=d+1|0}while((d|0)<(g|0));f=f+1|0;if((f|0)>=(y|0))break b}Oa(16605,15693,408,29907)}else{f=0;d:while(1){h=k[c+(f<<2)>>2]|0;d=k[j+(f<<2)>>2]|0;if(m)g=k[j+(f+1<<2)>>2]|0;else g=(k[l+(f<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{e=k[i+(d<<2)>>2]|0;if((e|0)>=(f|0)){e=k[c+(e<<2)>>2]|0;e=(e|0)<(h|0)?h:e;if(!((e|0)>-1?(k[z>>2]|0)>(e|0):0))break d;w=n+(e<<2)|0;k[w>>2]=(k[w>>2]|0)+1}d=d+1|0}while((d|0)<(g|0));f=f+1|0;if((f|0)>=(y|0))break b}Oa(16605,15693,408,29907)}while(0);f=b+12|0;d=k[f>>2]|0;k[d>>2]=0;if(r){g=k[x>>2]|0;h=k[f>>2]|0;e=0;while(1){if((k[z>>2]|0)<=(e|0))break;w=e;e=e+1|0;k[d+(e<<2)>>2]=(k[g+(w<<2)>>2]|0)+(k[d+(w<<2)>>2]|0);if((e|0)>=(y|0)){o=h;q=f;break a}else d=h}Oa(16605,15693,408,29907)}else{o=d;q=f}}else{q=b+12|0;o=k[q>>2]|0;k[o>>2]=0}while(0);ql(b+20|0,k[o+(y<<2)>>2]|0,0.0);e:do if(r){e=k[q>>2]|0;f=k[x>>2]|0;d=0;do{if((k[z>>2]|0)<=(d|0)){s=37;break}k[f+(d<<2)>>2]=k[e+(d<<2)>>2];d=d+1|0}while((d|0)<(y|0));if((s|0)==37)Oa(16605,15693,408,29907);if(r){t=a+20|0;v=a+24|0;w=a+12|0;q=a+16|0;r=(c|0)==0;s=b+24|0;o=b+20|0;l=0;f:while(1){m=k[t>>2]|0;n=k[v>>2]|0;d=k[w>>2]|0;f=k[d+(l<<2)>>2]|0;e=k[q>>2]|0;if(!e)j=k[d+(l+1<<2)>>2]|0;else j=(k[e+(l<<2)>>2]|0)+f|0;if((f|0)<(j|0)){i=c+(l<<2)|0;if(r){e=f;do{d=k[n+(e<<2)>>2]|0;do if((d|0)>=(l|0)){if(!((d|0)>-1?(k[z>>2]|0)>(d|0):0)){s=56;break f}b=(k[x>>2]|0)+(d<<2)|0;f=k[b>>2]|0;k[b>>2]=f+1;b=(l|0)<(d|0);k[(k[s>>2]|0)+(f<<2)>>2]=b?l:d;d=m+(e<<4)|0;if(b){B=-+p[m+(e<<4)+8>>3];b=k[o>>2]|0;p[b+(f<<4)>>3]=+p[d>>3];p[b+(f<<4)+8>>3]=B;break}else{b=(k[o>>2]|0)+(f<<4)|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[b+12>>2]=k[d+12>>2];break}}while(0);e=e+1|0}while((e|0)<(j|0))}else do{d=k[n+(f<<2)>>2]|0;do if((d|0)>=(l|0)){h=k[i>>2]|0;e=k[c+(d<<2)>>2]|0;d=(e|0)<(h|0)?h:e;if(!((d|0)>-1?(k[z>>2]|0)>(d|0):0)){s=56;break f}b=(k[x>>2]|0)+(d<<2)|0;g=k[b>>2]|0;k[b>>2]=g+1;b=(h|0)<(e|0);k[(k[s>>2]|0)+(g<<2)>>2]=b?h:e;d=m+(f<<4)|0;if(b){B=-+p[m+(f<<4)+8>>3];b=k[o>>2]|0;p[b+(g<<4)>>3]=+p[d>>3];p[b+(g<<4)+8>>3]=B;break}else{b=(k[o>>2]|0)+(g<<4)|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[b+12>>2]=k[d+12>>2];break}}while(0);f=f+1|0}while((f|0)<(j|0))}l=l+1|0;if((l|0)>=(y|0))break e}if((s|0)==56)Oa(16605,15693,408,29907)}}while(0);d=k[x>>2]|0;if(!d){u=A;return}Pq(k[d+-4>>2]|0);u=A;return}function wm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=u;u=u+48|0;f=g;d=k[b+8>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(17300,17319,208,17671);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=d;k[f+28>>2]=0;c=Oq((d<<2)+4|0)|0;k[f+12>>2]=c;if(!c){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[e>>2]=d;h=k[b+8>>2]|0;e=k[b+4>>2]|0;iF(c|0,0,(d<<2)+4|0)|0;if((h|0)!=(e|0))Oa(17434,17499,64,17589);vm(b,f,k[a+72>>2]|0);ym(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function xm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=u;u=u+48|0;f=g;d=k[b+8>>2]|0;if((d|0)!=(k[b+4>>2]|0))Oa(17300,17319,208,17671);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=d;k[f+28>>2]=0;c=Oq((d<<2)+4|0)|0;k[f+12>>2]=c;if(!c){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}k[e>>2]=d;h=k[b+8>>2]|0;e=k[b+4>>2]|0;iF(c|0,0,(d<<2)+4|0)|0;if((h|0)!=(e|0))Oa(17434,17499,64,17589);vm(b,f,k[a+72>>2]|0);zm(a,f);Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);a=k[f+20>>2]|0;if(a|0)FA(a);a=k[f+24>>2]|0;if(!a){u=g;return}FA(a);u=g;return}function ym(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;aa=u;u=u+64|0;U=aa+48|0;Y=aa+32|0;Z=aa+16|0;_=aa;if(!(i[a+9>>0]|0))Oa(17681,17738,105,17834);Q=k[b+8>>2]|0;if((Q|0)!=(k[b+4>>2]|0))Oa(17855,17738,106,17834);S=a+60|0;if((k[S>>2]|0)!=(Q|0))Oa(17876,17738,107,17834);T=a+68|0;if((k[T>>2]|0)!=(Q|0))Oa(17903,17738,108,17834);V=k[a+24>>2]|0;W=k[a+36>>2]|0;X=k[a+32>>2]|0;if(Q>>>0>268435455){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}e=Q<<4;if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}k[d+-4>>2]=c;if(!d){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}}else{d=u;u=u+((1*(e|15)|0)+15&-16)|0;d=d+15&-16}P=d;N=d;O=e>>>0>131072;c=Q<<2;if(c>>>0>=131073){c=c+16|0;e=Oq(c)|0;f=e+16&-16;if(!e){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}k[f+-4>>2]=e;if(!f){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}c=Oq(c)|0;e=c+16&-16;if(!c){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}k[e+-4>>2]=c;if(!e){aa=Kb(4)|0;cF(aa);Cc(aa|0,2032,79)}else L=1}else{L=c+15|0;f=u;u=u+((1*L|0)+15&-16)|0;e=u;u=u+((1*L|0)+15&-16)|0;f=f+15&-16;e=e+15&-16;L=0}M=e;F=e;G=a+48|0;pk(G,Q);do if((Q|0)>0){H=a+64|0;I=b+20|0;J=b+24|0;K=b+12|0;v=b+16|0;w=a+96|0;x=a+88|0;y=a+52|0;z=U+8|0;A=_+8|0;B=_+8|0;C=Z+8|0;D=a+56|0;t=0;E=1;a:while(1){s=N+(t<<4)|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[F+(t<<2)>>2]=t;if((k[T>>2]|0)<=(t|0)){c=28;break}k[(k[H>>2]|0)+(t<<2)>>2]=0;q=k[I>>2]|0;r=k[J>>2]|0;c=k[K>>2]|0;j=k[c+(t<<2)>>2]|0;b=k[v>>2]|0;if(!b)o=k[c+(t+1<<2)>>2]|0;else o=(k[b+(t<<2)>>2]|0)+j|0;if((j|0)<(o|0)){c=Q;do{b=k[r+(j<<2)>>2]|0;if((b|0)<=(t|0)?(h=+p[q+(j<<4)+8>>3],R=N+(b<<4)|0,p[R>>3]=+p[q+(j<<4)>>3]+ +p[R>>3],R=N+(b<<4)+8|0,p[R>>3]=+p[R>>3]-h,R=F+(b<<2)|0,(k[R>>2]|0)!=(t|0)):0){n=0;l=R;while(1){k[f+(n<<2)>>2]=b;k[l>>2]=t;if((b|0)<=-1){c=38;break a}if((k[S>>2]|0)<=(b|0)){c=38;break a}m=n+1|0;b=k[(k[D>>2]|0)+(b<<2)>>2]|0;l=F+(b<<2)|0;if((k[l>>2]|0)==(t|0))break;else n=m}if((n|0)>-1){b=m;do{n=b;b=b+-1|0;c=c+-1|0;k[f+(c<<2)>>2]=k[f+(b<<2)>>2]}while((n|0)>1)}}j=j+1|0}while((j|0)<(o|0));g=+p[s>>3]}else{c=Q;g=0.0}g=g*+p[w>>3]+ +p[x>>3];k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;if((c|0)<(Q|0)){l=c;do{j=k[f+(l<<2)>>2]|0;s=N+(j<<4)|0;k[U>>2]=k[s>>2];k[U+4>>2]=k[s+4>>2];k[U+8>>2]=k[s+8>>2];k[U+12>>2]=k[s+12>>2];k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;if((j|0)<=-1){c=46;break a}if((k[y>>2]|0)<=(j|0)){c=46;break a}tk(Z,U,(k[G>>2]|0)+(j<<4)|0);k[Y>>2]=k[Z>>2];k[Y+4>>2]=k[Z+4>>2];k[Y+8>>2]=k[Z+8>>2];k[Y+12>>2]=k[Z+12>>2];c=k[V+(j<<2)>>2]|0;if((k[T>>2]|0)<=(j|0)){c=48;break a}s=k[(k[H>>2]|0)+(j<<2)>>2]|0;b=s+c|0;if((s|0)>0)do{h=-+p[X+(c<<4)+8>>3];p[_>>3]=+p[X+(c<<4)>>3];p[B>>3]=h;uk(Z,_,U);s=k[W+(c<<2)>>2]|0;r=N+(s<<4)|0;p[r>>3]=+p[r>>3]-+p[Z>>3];s=N+(s<<4)+8|0;p[s>>3]=+p[s>>3]-+p[C>>3];c=c+1|0}while((c|0)<(b|0));h=-+p[z>>3];p[_>>3]=+p[U>>3];p[A>>3]=h;uk(Z,Y,_);h=+p[Z>>3];k[W+(c<<2)>>2]=t;s=X+(c<<4)|0;k[s>>2]=k[Y>>2];k[s+4>>2]=k[Y+4>>2];k[s+8>>2]=k[Y+8>>2];k[s+12>>2]=k[Y+12>>2];if((k[T>>2]|0)<=(j|0)){c=52;break a}s=(k[H>>2]|0)+(j<<2)|0;g=g-h;k[s>>2]=(k[s>>2]|0)+1;l=l+1|0}while((l|0)<(Q|0))}if((k[y>>2]|0)<=(t|0)){c=55;break}b=k[G>>2]|0;p[b+(t<<4)>>3]=g;p[b+(t<<4)+8>>3]=0.0;b=g==0.0;t=t+1|0;if(b){c=57;break}if((t|0)>=(Q|0)){c=57;break}else E=E&(b^1)}if((c|0)==28)Oa(16605,15693,408,29907);else if((c|0)==38)Oa(16605,15693,408,29907);else if((c|0)==46)Oa(16605,15693,408,29907);else if((c|0)==48)Oa(16605,15693,408,29907);else if((c|0)==52)Oa(16605,15693,408,29907);else if((c|0)==55)Oa(16605,15693,408,29907);else if((c|0)==57){$=b|E^1;break}}else $=0;while(0);k[a+4>>2]=$&1;i[a+8>>0]=1;if(L<<24>>24){if(e|0)Pq(k[M+-4>>2]|0);if(f|0)Pq(k[f+-4>>2]|0)}if((d|0)==0|O^1){u=aa;return}Pq(k[P+-4>>2]|0);u=aa;return}function zm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0.0,l=0.0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;$=u;u=u+64|0;T=$+48|0;X=$+32|0;Y=$+16|0;Z=$;if(!(i[a+9>>0]|0))Oa(17681,17738,105,17834);O=k[b+8>>2]|0;if((O|0)!=(k[b+4>>2]|0))Oa(17855,17738,106,17834);R=a+60|0;if((k[R>>2]|0)!=(O|0))Oa(17876,17738,107,17834);S=a+68|0;if((k[S>>2]|0)!=(O|0))Oa(17903,17738,108,17834);U=k[a+24>>2]|0;V=k[a+36>>2]|0;W=k[a+32>>2]|0;if(O>>>0>268435455){$=Kb(4)|0;cF($);Cc($|0,2032,79)}e=O<<4;if(e>>>0>=131073){c=Oq(e+16|0)|0;d=c+16&-16;if(!c){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[d+-4>>2]=c;if(!d){$=Kb(4)|0;cF($);Cc($|0,2032,79)}}else{d=u;u=u+((1*(e|15)|0)+15&-16)|0;d=d+15&-16}N=d;L=d;M=e>>>0>131072;c=O<<2;if(c>>>0>=131073){c=c+16|0;e=Oq(c)|0;f=e+16&-16;if(!e){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[f+-4>>2]=e;if(!f){$=Kb(4)|0;cF($);Cc($|0,2032,79)}c=Oq(c)|0;e=c+16&-16;if(!c){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[e+-4>>2]=c;if(!e){$=Kb(4)|0;cF($);Cc($|0,2032,79)}else J=1}else{J=c+15|0;f=u;u=u+((1*J|0)+15&-16)|0;e=u;u=u+((1*J|0)+15&-16)|0;f=f+15&-16;e=e+15&-16;J=0}K=e;I=e;c=a+52|0;if(k[c>>2]|0){g=a+48|0;h=k[g>>2]|0;if(h|0)Pq(k[h+-4>>2]|0);k[g>>2]=0}k[c>>2]=0;a:do if((O|0)>0){E=a+64|0;F=b+20|0;G=b+24|0;H=b+12|0;z=b+16|0;A=a+96|0;B=a+88|0;C=T+8|0;D=Z+8|0;w=Z+8|0;x=Y+8|0;y=a+56|0;v=0;b:while(1){t=L+(v<<4)|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[I+(v<<2)>>2]=v;if((k[S>>2]|0)<=(v|0)){c=31;break}c=k[E>>2]|0;k[c+(v<<2)>>2]=0;r=k[F>>2]|0;s=k[G>>2]|0;g=k[H>>2]|0;b=k[g+(v<<2)>>2]|0;h=k[z>>2]|0;if(!h)q=k[g+(v+1<<2)>>2]|0;else q=(k[h+(v<<2)>>2]|0)+b|0;if((b|0)<(q|0)){g=O;do{h=k[s+(b<<2)>>2]|0;if((h|0)<=(v|0)?(l=+p[r+(b<<4)+8>>3],P=L+(h<<4)|0,p[P>>3]=+p[r+(b<<4)>>3]+ +p[P>>3],P=L+(h<<4)+8|0,p[P>>3]=+p[P>>3]-l,P=I+(h<<2)|0,(k[P>>2]|0)!=(v|0)):0){o=0;m=P;while(1){k[f+(o<<2)>>2]=h;k[m>>2]=v;if((h|0)<=-1){c=41;break b}if((k[R>>2]|0)<=(h|0)){c=41;break b}n=o+1|0;h=k[(k[y>>2]|0)+(h<<2)>>2]|0;m=I+(h<<2)|0;if((k[m>>2]|0)==(v|0))break;else o=n}if((o|0)>-1){h=n;do{o=h;h=h+-1|0;g=g+-1|0;k[f+(g<<2)>>2]=k[f+(h<<2)>>2]}while((o|0)>1)}}b=b+1|0}while((b|0)<(q|0));j=+p[t>>3]}else{g=O;j=0.0}j=j*+p[A>>3]+ +p[B>>3];k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;if((g|0)<(O|0))do{b=k[f+(g<<2)>>2]|0;c=L+(b<<4)|0;k[T>>2]=k[c>>2];k[T+4>>2]=k[c+4>>2];k[T+8>>2]=k[c+8>>2];k[T+12>>2]=k[c+12>>2];k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;c=U+(b<<2)|0;tk(Y,T,W+(k[c>>2]<<4)|0);k[X>>2]=k[Y>>2];k[X+4>>2]=k[Y+4>>2];k[X+8>>2]=k[Y+8>>2];k[X+12>>2]=k[Y+12>>2];k[T>>2]=k[Y>>2];k[T+4>>2]=k[Y+4>>2];k[T+8>>2]=k[Y+8>>2];k[T+12>>2]=k[Y+12>>2];c=k[c>>2]|0;if((b|0)<=-1){c=49;break b}if((k[S>>2]|0)<=(b|0)){c=49;break b}h=(k[(k[E>>2]|0)+(b<<2)>>2]|0)+c|0;c=c+1|0;if((c|0)<(h|0))do{l=-+p[W+(c<<4)+8>>3];p[Z>>3]=+p[W+(c<<4)>>3];p[w>>3]=l;uk(Y,Z,T);t=k[V+(c<<2)>>2]|0;s=L+(t<<4)|0;p[s>>3]=+p[s>>3]-+p[Y>>3];t=L+(t<<4)+8|0;p[t>>3]=+p[t>>3]-+p[x>>3];c=c+1|0}while((c|0)<(h|0));l=-+p[C>>3];p[Z>>3]=+p[T>>3];p[D>>3]=l;uk(Y,X,Z);l=+p[Y>>3];k[V+(c<<2)>>2]=v;t=W+(c<<4)|0;k[t>>2]=k[X>>2];k[t+4>>2]=k[X+4>>2];k[t+8>>2]=k[X+8>>2];k[t+12>>2]=k[X+12>>2];if((k[S>>2]|0)<=(b|0)){c=53;break b}c=k[E>>2]|0;t=c+(b<<2)|0;j=j-l;k[t>>2]=(k[t>>2]|0)+1;g=g+1|0}while((g|0)<(O|0));if((k[S>>2]|0)<=(v|0)){c=56;break}t=k[U+(v<<2)>>2]|0;s=c+(v<<2)|0;c=k[s>>2]|0;k[s>>2]=c+1;c=c+t|0;k[V+(c<<2)>>2]=v;if(j<=0.0){_=1;break a}l=+Q(+j);p[W+(c<<4)>>3]=l;p[W+(c<<4)+8>>3]=0.0;v=v+1|0;if((v|0)>=(O|0)){_=0;break a}}if((c|0)==31)Oa(16605,15693,408,29907);else if((c|0)==41)Oa(16605,15693,408,29907);else if((c|0)==49)Oa(16605,15693,408,29907);else if((c|0)==53)Oa(16605,15693,408,29907);else if((c|0)==56)Oa(16605,15693,408,29907)}else _=0;while(0);k[a+4>>2]=_;i[a+8>>0]=1;if(J<<24>>24){if(e|0)Pq(k[K+-4>>2]|0);if(f|0)Pq(k[f+-4>>2]|0)}if((d|0)==0|M^1){u=$;return}Pq(k[N+-4>>2]|0);u=$;return}function Am(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+16>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}ak(a,d,c);c=k[b>>2]|0;d=k[c+16>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Bm(h,i,a);return}ak(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Bm(h,i,a);return}function Bm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=u;u=u+48|0;r=s+16|0;o=s;if(!(i[a+8>>0]|0))Oa(18167,17319,591,18314);p=a+12|0;m=a+20|0;j=k[m>>2]|0;if((j|0)!=(k[b+4>>2]|0))Oa(18326,17319,592,18314);if(k[a+4>>2]|0){u=s;return}g=a+72|0;q=a+76|0;f=k[q>>2]|0;if((f|0)<=0){h=k[b>>2]|0;g=k[b+8>>2]|0;f=c+4|0;if(!((k[f>>2]|0)==(j|0)?(k[c+8>>2]|0)==(g|0):0)){ak(c,j,g);if((k[f>>2]|0)!=(j|0))Oa(12160,12207,721,12285);if((k[c+8>>2]|0)!=(g|0))Oa(12160,12207,721,12285)}b=k[c>>2]|0;g=aa(g,j)|0;if((g|0)>0){f=0;do{j=b+(f<<4)|0;t=h+(f<<4)|0;k[j>>2]=k[t>>2];k[j+4>>2]=k[t+4>>2];k[j+8>>2]=k[t+8>>2];k[j+12>>2]=k[t+12>>2];f=f+1|0}while((f|0)!=(g|0))}}else{if((f|0)!=(j|0))Oa(14710,14850,97,14920);f=k[b+8>>2]|0;if(!((k[c+4>>2]|0)==(j|0)?(k[c+8>>2]|0)==(f|0):0))ak(c,j,f);Cm(c,g,b)}h=p+16|0;g=k[h>>2]|0;if(g){b=k[p+4>>2]|0;if(b|0){if((b|0)<=-1)Oa(14697,13988,163,14058);e=k[g>>2]|0;if((b|0)==1){l=1;n=27}else{f=1;do{e=(k[g+(f<<2)>>2]|0)+e|0;f=f+1|0}while((f|0)<(b|0));l=b;n=27}}}else{e=k[p+12>>2]|0;l=k[p+4>>2]|0;e=(k[e+(l<<2)>>2]|0)-(k[e>>2]|0)|0;n=27}do if((n|0)==27?(e|0)>0:0){e=(l|0)==(k[m>>2]|0);if(!(i[a+104>>0]|0)){if(!e)Oa(18358,18431,180,18516);if((l|0)==(k[c+4>>2]|0)){Em(p,c);break}else Oa(18358,18431,180,18516)}else{if(!e)Oa(18358,18431,180,18516);if((l|0)==(k[c+4>>2]|0)){Dm(p,c);break}else Oa(18358,18431,180,18516)}}while(0);e=k[a+52>>2]|0;do if((e|0)>0){k[o+4>>2]=a+48;k[o+12>>2]=c;if((e|0)==(k[c+4>>2]|0)){Fm(c,o,r);break}else Oa(14710,14850,97,14920)}while(0);g=k[h>>2]|0;if(g){f=k[p+4>>2]|0;if(f|0){if((f|0)<=-1)Oa(14697,13988,163,14058);d=k[g>>2]|0;if((f|0)==1)n=48;else{e=1;do{d=(k[g+(e<<2)>>2]|0)+d|0;e=e+1|0}while((e|0)<(f|0));n=48}}}else{d=k[p+12>>2]|0;d=(k[d+(k[p+4>>2]<<2)>>2]|0)-(k[d>>2]|0)|0;n=48}do if((n|0)==48?(d|0)>0:0)if(!(i[a+104>>0]|0)){i[r>>0]=0;i[r+4>>0]=0;d=r+8|0;k[d>>2]=0;k[d+4>>2]=p;d=k[a+20>>2]|0;if((d|0)!=(k[a+16>>2]|0))Oa(18358,18431,180,18516);if((d|0)==(k[c+4>>2]|0)){Hm(r+4|0,c);break}else Oa(18358,18431,180,18516)}else{i[r>>0]=0;i[r+4>>0]=0;d=r+8|0;k[d>>2]=0;k[d+4>>2]=p;d=k[a+20>>2]|0;if((d|0)!=(k[a+16>>2]|0))Oa(18358,18431,180,18516);if((d|0)==(k[c+4>>2]|0)){Gm(r+4|0,c);break}else Oa(18358,18431,180,18516)}while(0);if((k[q>>2]|0)<=0){u=s;return}if((k[a+84>>2]|0)!=(k[c+4>>2]|0))Oa(14710,14850,97,14920);Cm(c,a+80|0,c);u=s;return}function Cm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;w=u;u=u+16|0;s=w;q=c+4|0;r=k[q>>2]|0;e=k[c>>2]|0;if((k[a>>2]|0)==(e|0)?(t=a+4|0,(k[t>>2]|0)==(r|0)):0){o=b+4|0;p=k[o>>2]|0;if((p|0)<=-1)Oa(13359,12702,312,12780);if(!p){u=w;return}d=Oq(p+16|0)|0;r=d+16&-16;if(!d){w=Kb(4)|0;cF(w);Cc(w|0,2032,79)}k[r+-4>>2]=d;if(!r){w=Kb(4)|0;cF(w);Cc(w|0,2032,79)}q=r;iF(q|0,0,p|0)|0;d=k[o>>2]|0;a:do if((d|0)>0){c=a+8|0;e=0;b:while(1){c:do if((e|0)<(d|0)){f=(e|0)>-1;while(1){if(!(f&(p|0)>(e|0))){v=17;break b}if(!(i[q+e>>0]|0)){n=e;break c}e=e+1|0;if((e|0)>=(d|0)){n=e;break}}}else n=e;while(0);if((n|0)>=(d|0)){v=39;break a}e=n+1|0;i[q+n>>0]=1;d=k[b>>2]|0;f=k[d+(n<<2)>>2]|0;if((f|0)!=(n|0)){if((n|0)<=-1){v=32;break}do{g=k[a>>2]|0;j=g+(f<<4)|0;l=k[c>>2]|0;h=(l|0)>-1;if(!((j|0)==0|h)){v=33;break b}if((f|0)<=-1){v=35;break b}m=k[t>>2]|0;if((m|0)<=(f|0)){v=35;break b}g=g+(n<<4)|0;if(!((g|0)==0|h)){v=37;break b}if((m|0)<=(n|0)){v=38;break b}if((l|0)>0){d=0;do{h=aa(d,m)|0;x=j+(h<<4)|0;h=g+(h<<4)|0;k[s>>2]=k[x>>2];k[s+4>>2]=k[x+4>>2];k[s+8>>2]=k[x+8>>2];k[s+12>>2]=k[x+12>>2];k[x>>2]=k[h>>2];k[x+4>>2]=k[h+4>>2];k[x+8>>2]=k[h+8>>2];k[x+12>>2]=k[h+12>>2];k[h>>2]=k[s>>2];k[h+4>>2]=k[s+4>>2];k[h+8>>2]=k[s+8>>2];k[h+12>>2]=k[s+12>>2];d=d+1|0}while((d|0)!=(l|0));d=k[b>>2]|0}i[q+f>>0]=1;f=k[d+(f<<2)>>2]|0}while((f|0)!=(n|0))}d=k[o>>2]|0;if((e|0)>=(d|0))break a}if((v|0)==17)Oa(16605,15693,408,29907);else if((v|0)==32){e=k[a>>2]|0;d=(k[c>>2]|0)>-1;if(!((e+(f<<4)|0)==0|d))Oa(13818,13988,175,14058);if(!((f|0)>-1?(k[t>>2]|0)>(f|0):0))Oa(13577,13744,122,13812);if((e+(n<<4)|0)==0|d)Oa(13577,13744,122,13812);else Oa(13818,13988,175,14058)}else if((v|0)==33)Oa(13818,13988,175,14058);else if((v|0)==35)Oa(13577,13744,122,13812);else if((v|0)==37)Oa(13818,13988,175,14058);else if((v|0)==38)Oa(13577,13744,122,13812)}else v=39;while(0);if((v|0)==39?(r|0)==0:0){u=w;return}Pq(k[q+-4>>2]|0);u=w;return}if((r|0)<=0){u=w;return}j=c+8|0;l=a+8|0;m=a+4|0;d=k[j>>2]|0;if((e|0)==0|(d|0)>-1){n=0;o=d;p=e}else Oa(13818,13988,175,14058);while(1){f=k[q>>2]|0;if((f|0)<=(n|0)){v=43;break}d=k[(k[b>>2]|0)+(n<<2)>>2]|0;g=(k[a>>2]|0)+(d<<4)|0;e=k[l>>2]|0;if(!((g|0)==0|(e|0)>-1)){v=45;break}if((d|0)<=-1){v=48;break}h=k[m>>2]|0;if((h|0)<=(d|0)){v=48;break}if((e|0)!=(o|0)){v=50;break}if((o|0)>0){d=0;do{vF(g+((aa(d,h)|0)<<4)|0,p+((aa(d,f)|0)<<4)|0,16)|0;d=d+1|0}while((d|0)!=(o|0))}n=n+1|0;if((n|0)>=(r|0)){v=55;break}p=(k[c>>2]|0)+(n<<4)|0;o=k[j>>2]|0;if(!((p|0)==0|(o|0)>-1)){v=41;break}}if((v|0)==41)Oa(13818,13988,175,14058);else if((v|0)==43)Oa(13577,13744,122,13812);else if((v|0)==45)Oa(13818,13988,175,14058);else if((v|0)==48)Oa(13577,13744,122,13812);else if((v|0)==50)Oa(14445,14320,257,12780);else if((v|0)==55){u=w;return}}function Dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+16|0;s=z;t=b+8|0;d=k[t>>2]|0;if((d|0)<=0){u=z;return}v=a+4|0;w=b+4|0;x=a+20|0;y=a+24|0;r=a+12|0;o=a+16|0;q=s+8|0;n=0;c=k[v>>2]|0;a=d;do{if((c|0)>0){m=0;d=k[w>>2]|0;a=k[b>>2]|0;do{l=(aa(d,n)|0)+m|0;j=a+(l<<4)|0;if(!(+p[j>>3]==0.0?!(+p[a+(l<<4)+8>>3]!=0.0):0)){l=k[x>>2]|0;e=k[y>>2]|0;g=k[r>>2]|0;f=k[g+(m<<2)>>2]|0;h=k[o>>2]|0;if(!h)i=k[g+(m+1<<2)>>2]|0;else i=(k[h+(m<<2)>>2]|0)+f|0;a:do if((f|0)<(i|0)){h=e;while(1){g=k[h+(f<<2)>>2]|0;if((g|0)>=(m|0))break;f=f+1|0;if((f|0)>=(i|0))break a}f=((g|0)==(m|0)&1)+f|0}while(0);if((f|0)<(i|0)){c=f;do{uk(s,j,l+(c<<4)|0);a=k[b>>2]|0;d=k[w>>2]|0;h=(aa(d,n)|0)+(k[e+(c<<2)>>2]|0)|0;g=a+(h<<4)|0;p[g>>3]=+p[g>>3]-+p[s>>3];h=a+(h<<4)+8|0;p[h>>3]=+p[h>>3]-+p[q>>3];c=c+1|0}while((c|0)<(i|0));c=k[v>>2]|0}}m=m+1|0}while((m|0)<(c|0));a=k[t>>2]|0}n=n+1|0}while((n|0)<(a|0));u=z;return}function Em(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0,A=0;y=u;u=u+32|0;r=y+16|0;s=y;t=b+8|0;d=k[t>>2]|0;if((d|0)<=0){u=y;return}v=a+4|0;w=b+4|0;x=a+20|0;o=a+24|0;q=a+12|0;l=a+16|0;m=s+8|0;n=r+8|0;j=0;c=k[v>>2]|0;a=d;a:while(1){if((c|0)>0){i=0;do{g=k[b>>2]|0;h=(aa(k[w>>2]|0,j)|0)+i|0;f=g+(h<<4)|0;if(!(+p[f>>3]==0.0?!(+p[g+(h<<4)+8>>3]!=0.0):0)){g=k[x>>2]|0;h=k[o>>2]|0;c=k[q>>2]|0;a=k[c+(i<<2)>>2]|0;d=k[l>>2]|0;if(!d)e=k[c+(i+1<<2)>>2]|0;else e=(k[d+(i<<2)>>2]|0)+a|0;if((a|0)>=(e|0)){a=16;break a}while(1){c=h+(a<<2)|0;d=k[c>>2]|0;if((d|0)>=(i|0))break;a=a+1|0;if((a|0)>=(e|0)){a=16;break a}}if((d|0)!=(i|0)){a=16;break a}z=+p[g+(a<<4)+8>>3];p[s>>3]=+p[g+(a<<4)>>3];p[m>>3]=z;tk(r,f,s);k[f>>2]=k[r>>2];k[f+4>>2]=k[r+4>>2];k[f+8>>2]=k[r+8>>2];k[f+12>>2]=k[r+12>>2];a=((k[c>>2]|0)==(i|0)&1)+a|0;if((a|0)<(e|0))do{uk(r,f,g+(a<<4)|0);c=k[b>>2]|0;d=(aa(k[w>>2]|0,j)|0)+(k[h+(a<<2)>>2]|0)|0;A=c+(d<<4)|0;p[A>>3]=+p[A>>3]-+p[r>>3];d=c+(d<<4)+8|0;p[d>>3]=+p[d>>3]-+p[n>>3];a=a+1|0}while((a|0)<(e|0))}i=i+1|0;c=k[v>>2]|0}while((i|0)<(c|0));a=k[t>>2]|0}j=j+1|0;if((j|0)>=(a|0)){a=4;break}}if((a|0)==4){u=y;return}else if((a|0)==16)Oa(18529,18431,124,13144)}function Fm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0;s=u;u=u+48|0;o=s+32|0;q=s+16|0;r=s;e=k[b+12>>2]|0;m=k[b+4>>2]|0;i=k[m>>2]|0;j=k[e>>2]|0;l=k[e+4>>2]|0;m=k[m+4>>2]|0;e=k[e+8>>2]|0;n=a+4|0;if((k[n>>2]|0)==(m|0)?(d=a+8|0,(k[d>>2]|0)==(e|0)):0)t=d;else{ak(a,m,e);if((k[n>>2]|0)!=(m|0))Oa(12160,12207,721,12285);c=a+8|0;if((k[c>>2]|0)==(e|0))t=c;else Oa(12160,12207,721,12285)}g=k[a>>2]|0;if((e|0)<=0){u=s;return}h=o+8|0;f=0;b=m;c=e;do{if((b|0)>0){d=aa(f,m)|0;a=aa(f,l)|0;c=0;do{b=g+(c+d<<4)|0;p[o>>3]=1.0;p[h>>3]=0.0;tk(q,o,i+(c<<4)|0);uk(r,q,j+(c+a<<4)|0);k[b>>2]=k[r>>2];k[b+4>>2]=k[r+4>>2];k[b+8>>2]=k[r+8>>2];k[b+12>>2]=k[r+12>>2];c=c+1|0;b=k[n>>2]|0}while((c|0)<(b|0));c=k[t>>2]|0}f=f+1|0}while((f|0)<(c|0));u=s;return}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=u;u=u+32|0;B=D+16|0;C=D;y=a+8|0;z=b+8|0;c=k[z>>2]|0;if((c|0)<=0){u=D;return}e=k[y>>2]|0;A=b+4|0;r=e+20|0;s=e+24|0;t=e+12|0;v=e+16|0;w=C+8|0;x=B+8|0;a=0;d=c;while(1){c=k[e+4>>2]|0;if((c|0)>0){do{q=c;c=c+-1|0;d=k[b>>2]|0;e=k[A>>2]|0;o=(aa(e,a)|0)+c|0;i=+p[d+(o<<4)>>3];f=+p[d+(o<<4)+8>>3];o=k[r>>2]|0;m=k[s>>2]|0;g=k[t>>2]|0;j=k[g+(c<<2)>>2]|0;h=k[v>>2]|0;if(!h)n=k[g+(q<<2)>>2]|0;else n=(k[h+(c<<2)>>2]|0)+j|0;a:do if((j|0)<(n|0)){l=m;g=j;while(1){h=k[l+(g<<2)>>2]|0;if((h|0)>=(c|0))break;g=g+1|0;if((g|0)>=(n|0))break a}g=((h|0)==(c|0)&1)+g|0}else g=j;while(0);if((g|0)<(n|0))do{E=-+p[o+(g<<4)+8>>3];p[C>>3]=+p[o+(g<<4)>>3];p[w>>3]=E;uk(B,C,d+((aa(e,a)|0)+(k[m+(g<<2)>>2]|0)<<4)|0);i=i-+p[B>>3];f=f-+p[x>>3];g=g+1|0;d=k[b>>2]|0;e=k[A>>2]|0}while((g|0)<(n|0));o=(aa(e,a)|0)+c|0;p[d+(o<<4)>>3]=i;p[d+(o<<4)+8>>3]=f}while((q|0)>1);c=k[z>>2]|0}else c=d;a=a+1|0;if((a|0)>=(c|0))break;e=k[y>>2]|0;d=c}u=D;return}function Hm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=u;u=u+64|0;z=D+48|0;A=D+32|0;B=D+16|0;C=D;x=a+8|0;y=b+8|0;c=k[y>>2]|0;if((c|0)<=0){u=D;return}e=k[x>>2]|0;m=b+4|0;n=A+8|0;o=e+20|0;q=e+24|0;r=e+12|0;s=e+16|0;t=C+8|0;v=B+8|0;w=z+8|0;a=0;d=c;a:while(1){c=k[e+4>>2]|0;if((c|0)>0){do{i=c;c=c+-1|0;e=k[b>>2]|0;h=k[m>>2]|0;j=e+((aa(h,a)|0)+c<<4)|0;k[z>>2]=k[j>>2];k[z+4>>2]=k[j+4>>2];k[z+8>>2]=k[j+8>>2];k[z+12>>2]=k[j+12>>2];k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;j=k[o>>2]|0;l=k[q>>2]|0;f=k[r>>2]|0;d=k[f+(c<<2)>>2]|0;g=k[s>>2]|0;if(!g)g=k[f+(i<<2)>>2]|0;else g=(k[g+(c<<2)>>2]|0)+d|0;if((d|0)>=(g|0)){a=15;break a}while(1){f=k[l+(d<<2)>>2]|0;if((f|0)>=(c|0))break;d=d+1|0;if((d|0)>=(g|0)){a=15;break a}}if((f|0)!=(c|0)){a=15;break a}E=-+p[j+(d<<4)+8>>3];p[A>>3]=+p[j+(d<<4)>>3];p[n>>3]=E;d=d+1|0;b:do if((d|0)<(g|0)){f=h;while(1){E=-+p[j+(d<<4)+8>>3];p[C>>3]=+p[j+(d<<4)>>3];p[t>>3]=E;uk(B,C,e+((aa(f,a)|0)+(k[l+(d<<2)>>2]|0)<<4)|0);p[z>>3]=+p[z>>3]-+p[B>>3];p[w>>3]=+p[w>>3]-+p[v>>3];d=d+1|0;if((d|0)>=(g|0))break b;f=k[m>>2]|0;e=k[b>>2]|0}}while(0);tk(B,z,A);l=(k[b>>2]|0)+((aa(k[m>>2]|0,a)|0)+c<<4)|0;k[l>>2]=k[B>>2];k[l+4>>2]=k[B+4>>2];k[l+8>>2]=k[B+8>>2];k[l+12>>2]=k[B+12>>2]}while((i|0)>1);c=k[y>>2]|0}else c=d;a=a+1|0;if((a|0)>=(c|0)){a=3;break}e=k[x>>2]|0;d=c}if((a|0)==3){u=D;return}else if((a|0)==15)Oa(18529,18431,84,13144)}function Im(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Jm(a){a=a|0;return 504}function Km(a){a=a|0;if(!a)return;fl(a+8|0);EA(a);return}function Lm(a){a=a|0;var b=0;b=CA(320)|0;k[b>>2]=a;nl(b+8|0);i[b+312>>0]=0;i[b+313>>0]=0;return b|0}function Mm(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function Nm(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+312|0;if(!(i[b>>0]|0)){i[b>>0]=0;c=a+313|0;i[c>>0]=0;e=(k[a>>2]|0)+664|0;nm(e);d=a+8|0;Om(d,e);i[b>>0]=1;Pm(d,e);if(!(i[d>>0]|0))Oa(17611,18907,204,17666);if(k[a+12>>2]|0)return;i[c>>0]=1;return}b=a+313|0;if(i[b>>0]|0)return;d=(k[a>>2]|0)+664|0;nm(d);e=a+8|0;Pm(e,d);if(!(i[e>>0]|0))Oa(17611,18907,204,17666);if(k[a+12>>2]|0)return;i[b>>0]=1;return}function Om(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+48|0;y=z+32|0;x=z+24|0;w=z+16|0;v=z+8|0;t=z;p=a+24|0;ml(p,b)|0;s=a+132|0;Qm(z+40|0,p,s);r=a+136|0;if(k[r>>2]|0){m=a+40|0;if((k[m>>2]|0)==0?(d=k[a+28>>2]|0,e=Oq(d<<2)|0,k[m>>2]=e,(d|0)>0):0){f=k[a+36>>2]|0;c=0;do{l=c;c=c+1|0;k[e+(l<<2)>>2]=(k[f+(c<<2)>>2]|0)-(k[f+(l<<2)>>2]|0)}while((c|0)<(d|0))}l=b+4|0;j=k[l>>2]|0;if((j+1|0)>>>0>1073741823){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}e=b+16|0;c=k[e>>2]|0;if((c|0)==0?(g=k[b+12>>2]|0,(g|0)!=0):0){c=g;q=17}else{d=j<<2|1;do if(d>>>0>=131073){c=Oq(d+16|0)|0;d=c+16&-16;if(!c){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}k[d+-4>>2]=c;if(!d){z=Kb(4)|0;cF(z);Cc(z|0,2032,79)}else{c=k[e>>2]|0;break}}else{h=u;u=u+((1*(d+15|0)|0)+15&-16)|0;d=h+15&-16}while(0);if(c){f=(j<<2|1)>>>0>131072;e=k[a+36>>2]|0;if((j|0)>-1){c=0;while(1){k[d+(c<<2)>>2]=k[e+(c<<2)>>2];if((c|0)==(j|0))break;else c=c+1|0}h=d;b=d;c=k[l>>2]|0;q=20}else{n=f;o=d}}else{c=d;q=17}}if((q|0)==17){h=c;f=(j<<2|1)>>>0>131072;b=(k[b+12>>2]|0)==0?c:0;c=j;q=20}a:do if((q|0)==20)if((c|0)>0){d=a+36|0;c=0;while(1){e=h+(c<<2)|0;if((k[r>>2]|0)<=(c|0)){q=26;break}g=(k[s>>2]|0)+(c<<2)|0;k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]=k[e>>2];if((k[r>>2]|0)<=(c|0)){q=28;break}c=c+1|0;k[(k[m>>2]|0)+(k[g>>2]<<2)>>2]=(k[h+(c<<2)>>2]|0)-(k[e>>2]|0);if((c|0)>=(k[l>>2]|0)){n=f;o=b;break a}}if((q|0)==26)Oa(16605,15693,425,29764);else if((q|0)==28)Oa(16605,15693,425,29764)}else{n=f;o=b}while(0);if(!((o|0)==0|n^1))Pq(k[o+-4>>2]|0)}k[y>>2]=0;k[y+4>>2]=0;j=a+148|0;Rm(p,j,y,0)|0;if(!(i[a+248>>0]|0)){k[x>>2]=0;m=x+4|0;k[m>>2]=0;k[w>>2]=0;b=w+4|0;k[b>>2]=0;n=a+28|0;ei(k[n>>2]|0,j,x);n=k[n>>2]|0;Ef(w,n+1|0);l=(n|0)>0;h=a+152|0;b:do if(l){e=k[x>>2]|0;f=k[w>>2]|0;d=0;while(1){if((k[h>>2]|0)<=(d|0)){q=39;break}g=k[(k[j>>2]|0)+(d<<2)>>2]|0;if((g|0)<=-1){q=42;break}c=k[m>>2]|0;if((c|0)<=(g|0)){q=42;break}if((c|0)<=(d|0)){q=44;break}c=k[e+(d<<2)>>2]|0;if(!((c|0)>-1?(k[b>>2]|0)>(c|0):0)){q=46;break}k[f+(c<<2)>>2]=k[e+(g<<2)>>2];d=d+1|0;if((d|0)>=(n|0))break b}if((q|0)==39)Oa(16605,15693,425,29764);else if((q|0)==42)Oa(16605,15693,425,29764);else if((q|0)==44)Oa(16605,15693,425,29764);else if((q|0)==46)Oa(16605,15693,425,29764)}while(0);f=k[w>>2]|0;e=k[b>>2]|0;if((k[h>>2]|0)!=(e|0)?(Ng(j,e,1),(k[h>>2]|0)!=(e|0)):0)Oa(12160,12207,721,12285);d=k[j>>2]|0;if((e|0)>0){c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)!=(e|0))}k[v>>2]=0;f=v+4|0;k[f>>2]=0;Ef(v,n);c:do if(l){d=k[x>>2]|0;e=k[v>>2]|0;c=0;while(1){if((k[m>>2]|0)<=(c|0)){q=51;break}if((k[f>>2]|0)<=(c|0)){q=53;break}k[e+(c<<2)>>2]=k[d+(c<<2)>>2];c=c+1|0;if((c|0)>=(n|0))break c}if((q|0)==51)Oa(16605,15693,425,29764);else if((q|0)==53)Oa(16605,15693,425,29764)}while(0);if(k[r>>2]|0){ji(t,0,v,s);e=k[t>>2]|0;f=k[t+4>>2]|0;if((k[r>>2]|0)!=(f|0)?(Ng(s,f,1),(k[r>>2]|0)!=(f|0)):0)Oa(12160,12207,721,12285);d=k[s>>2]|0;if((f|0)>0){c=0;do{k[d+(c<<2)>>2]=k[e+(c<<2)>>2];c=c+1|0}while((c|0)!=(f|0))}c=k[t>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}c=k[v>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[w>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[x>>2]|0;if(c|0)Pq(k[c+-4>>2]|0)}i[a+9>>0]=1;c=k[y>>2]|0;if(!c){u=z;return}Pq(k[c+-4>>2]|0);u=z;return}function Pm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;oa=u;u=u+368|0;T=oa+344|0;na=oa+336|0;ma=oa+328|0;la=oa+320|0;ka=oa+312|0;ja=oa+304|0;ia=oa+296|0;ha=oa+288|0;ga=oa+280|0;fa=oa+272|0;ea=oa+264|0;da=oa+256|0;ca=oa+248|0;O=oa+244|0;P=oa+240|0;Q=oa+236|0;R=oa+224|0;S=oa+72|0;U=oa+60|0;V=oa+48|0;W=oa+36|0;X=oa+24|0;Y=oa+12|0;Z=oa+88|0;_=oa;if(!(i[a+9>>0]|0))Oa(18847,18907,499,17671);p=b+4|0;if((k[b+8>>2]|0)!=(k[p>>2]|0))Oa(18982,18907,500,17671);i[a>>0]=1;$=a+24|0;ml($,b)|0;ba=a+132|0;q=a+136|0;g=k[q>>2]|0;a:do if(!g){Ef(ba,k[p>>2]|0);if((k[p>>2]|0)>0){c=0;while(1){if((k[q>>2]|0)<=(c|0))break;k[(k[ba>>2]|0)+(c<<2)>>2]=c;c=c+1|0;if((c|0)>=(k[p>>2]|0))break a}Oa(16605,15693,425,29764)}}else{d=a+40|0;c=k[d>>2]|0;if(!c){f=k[a+28>>2]|0;c=Oq(f<<2)|0;k[d>>2]=c;if((f|0)>0){e=k[a+36>>2]|0;d=0;do{M=d;d=d+1|0;k[c+(M<<2)>>2]=(k[e+(d<<2)>>2]|0)-(k[e+(M<<2)>>2]|0)}while((d|0)<(f|0))}}m=(k[b+16>>2]|0)==0;if(!m){b=k[p>>2]|0;f=b+1|0;f=DA(f>>>0>1073741823?-1:f<<2)|0;if((b|0)<0){n=f;o=f}else{e=k[a+36>>2]|0;d=0;while(1){k[f+(d<<2)>>2]=k[e+(d<<2)>>2];if((d|0)<(b|0))d=d+1|0;else{l=f;j=f;d=b;N=15;break}}}}else{j=k[b+12>>2]|0;l=j;d=k[p>>2]|0;N=15}b:do if((N|0)==15)if((d|0)>0){if((g|0)<=0)Oa(16605,15693,425,29764);e=k[a+36>>2]|0;f=k[ba>>2]|0;d=0;b=l;while(1){g=f+(d<<2)|0;k[e+(k[g>>2]<<2)>>2]=k[b>>2];h=d+1|0;if((k[q>>2]|0)<=(d|0)){N=21;break}k[c+(k[g>>2]<<2)>>2]=(k[l+(h<<2)>>2]|0)-(k[b>>2]|0);if((h|0)>=(k[p>>2]|0)){n=l;o=j;break b}if((k[q>>2]|0)>(h|0)){d=h;b=l+(h<<2)|0}else{N=19;break}}if((N|0)==19)Oa(16605,15693,425,29764);else if((N|0)==21)Oa(16605,15693,425,29764)}else{n=l;o=j}while(0);if(!((n|0)==0|m))FA(o)}while(0);L=k[a+32>>2]|0;M=k[a+28>>2]|0;e=k[$+16>>2]|0;if(e)if(M){if((M|0)<=-1)Oa(14697,13988,163,14058);c=k[e>>2]|0;if((M|0)!=1){d=1;do{c=(k[e+(d<<2)>>2]|0)+c|0;d=d+1|0}while((d|0)<(M|0))}}else c=0;else{c=k[$+12>>2]|0;c=(k[c+(M<<2)>>2]|0)-(k[c>>2]|0)|0}J=a+252|0;I=k[J>>2]|0;d=aa(I,L)|0;K=a+156|0;if(Sm(a,L,M,c,0,k[a+272>>2]|0,I,K)|0){TA(a+12|0,19046)|0;i[a+8>>0]=0;u=oa;return}k[na>>2]=0;I=na+4|0;k[I>>2]=0;Ef(na,L);c=k[I>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[na>>2]|0,0,c<<2|0)|0;k[ma>>2]=0;c=ma+4|0;k[c>>2]=0;Ef(ma,L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ma>>2]|0,0,c<<2|0)|0;k[la>>2]=0;c=la+4|0;k[c>>2]=0;Ef(la,L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[la>>2]|0,0,c<<2|0)|0;k[ka>>2]=0;G=ka+4|0;k[G>>2]=0;Ef(ka,d);k[ja>>2]=0;H=ja+4|0;k[H>>2]=0;Ef(ja,d);k[ia>>2]=0;c=ia+4|0;k[c>>2]=0;Ef(ia,M);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ia>>2]|0,0,c<<2|0)|0;k[ha>>2]=0;b=ha+4|0;k[b>>2]=0;Ef(ha,L*3|0);c=k[b>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ha>>2]|0,0,c<<2|0)|0;c=k[G>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ka>>2]|0,-1,c<<2|0)|0;c=k[H>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ja>>2]|0,-1,c<<2|0)|0;k[ga>>2]=0;F=ga+4|0;k[F>>2]=0;pk(ga,d);c=k[F>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ga>>2]|0,0,c<<4|0)|0;k[fa>>2]=0;c=fa+4|0;k[c>>2]=0;E=a+260|0;D=aa((k[E>>2]|0)+L|0,k[J>>2]|0)|0;pk(fa,(L|0)<(D|0)?D:L);c=k[c>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[fa>>2]|0,0,c<<4|0)|0;D=k[q>>2]|0;k[ea>>2]=0;e=ea+4|0;k[e>>2]=0;Ef(ea,D);e=k[e>>2]|0;if((e|0)>0){d=k[ea>>2]|0;f=k[ba>>2]|0;c=0;do{k[d+(k[f+(c<<2)>>2]<<2)>>2]=c;c=c+1|0}while((c|0)!=(e|0))}k[da>>2]=0;D=da+4|0;k[D>>2]=0;Ef(da,M);c=a+148|0;d=k[a+256>>2]|0;if(!(i[a+248>>0]|0))Um(a,M,c,d,ha,da);else Tm(a,M,c,d,ha,da);C=a+140|0;Ef(C,L);c=k[a+144>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[C>>2]|0,-1,c<<2|0)|0;c=k[b>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[ha>>2]|0,-1,c<<2|0)|0;w=a+296|0;k[w>>2]=1;A=a+168|0;if((k[A>>2]|0)<=0)Oa(16605,15693,425,29764);B=a+164|0;k[k[B>>2]>>2]=-1;d=a+160|0;c=k[d>>2]|0;if((c|0)<=-1)Oa(11919,12068,74,12145);if(c|0)iF(k[K>>2]|0,0,c<<2|0)|0;x=a+188|0;if((k[a+192>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[x>>2]>>2]=0;y=a+228|0;if((k[a+232>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[y>>2]>>2]=0;z=a+196|0;if((k[a+200>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[z>>2]>>2]=0;if((k[d>>2]|0)<=0)Oa(16605,15693,425,29764);k[k[K>>2]>>2]=0;k[ca>>2]=0;k[ca+4>>2]=0;Ef(ca,M);c:do if((M|0)>0){l=(L|0)>-1;m=R+4|0;n=S+4|0;o=U+4|0;p=V+4|0;q=W+4|0;r=X+4|0;s=Y+4|0;t=a+280|0;v=_+4|0;j=0;d:while(1){c=k[J>>2]|0;d=c+j|0;d=(M|0)<(d|0)?M:d;e=k[D>>2]|0;f=k[da>>2]|0;b=(j|0)>-2;g=j;while(1){g=g+1|0;if((g|0)>=(d|0))break;if(!(b&(e|0)>(g|0))){N=109;break d}if((k[f+(g<<2)>>2]|0)!=-1){N=111;break}}if((N|0)==111){N=0;c=g-j|0}h=(g|0)==(M|0)?M-j|0:c;Vm(a,L,h,j,$,C,P,ga,ja,na,ka,ia,ha,ma,la,K);Wm(a,L,h,j,k[P>>2]|0,ga,fa,na,ka,K);g=j;j=h+j|0;if((h|0)>0){b=g;do{d=aa(b-g|0,L)|0;k[Q>>2]=k[P>>2];c=(k[ja>>2]|0)+(d<<2)|0;if(!(l|(c|0)==0)){N=114;break d}if((d|L|0)<0?1:((k[H>>2]|0)-L|0)<(d|0)){N=116;break d}h=(k[ka>>2]|0)+(d<<2)|0;if(!(l|(h|0)==0)){N=118;break d}if(((k[G>>2]|0)-L|0)<(d|0)){N=120;break d}f=k[E>>2]|0;k[R>>2]=c;k[m>>2]=L;k[S>>2]=h;k[n>>2]=L;if(Xm(a,L,b,C,f,Q,R,na,S,ia,ha,ma,la,K)|0){N=122;break d}f=(k[ga>>2]|0)+(d<<4)|0;if(!(l|(f|0)==0)){N=124;break d}if(((k[F>>2]|0)-L|0)<(d|0)){N=126;break d}c=k[P>>2]|0;d=L-c|0;e=(k[na>>2]|0)+(c<<2)|0;if(!((d|0)>-1|(e|0)==0)){N=128;break d}if((d|c|0)<0?1:((k[I>>2]|0)-d|0)<(c|0)){N=130;break d}c=(k[Q>>2]|0)-c|0;k[U>>2]=f;k[o>>2]=L;k[V>>2]=e;k[p>>2]=d;k[W>>2]=h;k[q>>2]=L;if(Ym(a,b,c,U,fa,V,W,g,K)|0){N=132;break d}e=k[Q>>2]|0;k[X>>2]=h;k[r>>2]=L;k[Y>>2]=f;k[s>>2]=L;if(Zm(a,b,e,na,X,C,Y,K)|0){N=134;break d}c=_m(a,b,t,C,ea,O,K)|0;if(c|0){N=136;break d}c=k[O>>2]|0;if((c|0)!=(b|0))k[w>>2]=0-(k[w>>2]|0);f=k[Q>>2]|0;k[_>>2]=h;k[v>>2]=L;$m(a,b,C,c,f,na,_,ia,K);if((k[Q>>2]|0)>0){d=k[na>>2]|0;c=0;do{if((k[I>>2]|0)<=(c|0)){N=142;break d}e=k[d+(c<<2)>>2]|0;if(!((e|0)>-1&(L|0)>(e|0))){N=144;break d}k[h+(e<<2)>>2]=-1;c=c+1|0}while((c|0)<(k[Q>>2]|0))}b=b+1|0}while((b|0)<(j|0))}if((M|0)<=(j|0)){N=147;break c}}switch(N|0){case 109:{Oa(16605,15693,425,29764);break}case 114:{Oa(13818,13988,175,14058);break}case 116:{Oa(14177,13744,147,13812);break}case 118:{Oa(13818,13988,175,14058);break}case 120:{Oa(14177,13744,147,13812);break}case 122:{TA(a+12|0,19082)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 124:{Oa(13818,13988,175,14058);break}case 126:{Oa(14177,13744,147,13812);break}case 128:{Oa(13818,13988,175,14058);break}case 130:{Oa(14177,13744,147,13812);break}case 132:{TA(a+12|0,19123)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 134:{TA(a+12|0,19165)|0;k[a+4>>2]=1;i[a+8>>0]=0;break c}case 136:{W=a+12|0;TA(W,19208)|0;ba=Z+56|0;$=Z+4|0;k[Z>>2]=244;k[ba>>2]=264;Dr(Z+56|0,$);k[Z+128>>2]=0;k[Z+132>>2]=-1;k[Z>>2]=2804;k[ba>>2]=2824;Hr($);k[$>>2]=2856;_=Z+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[Z+52>>2]=16;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;Yi($,T);NA(T);Lr(Z,c)|0;ej(T,$);Y=i[T+11>>0]|0;X=Y<<24>>24<0;XA(W,X?k[T>>2]|0:T,X?k[T+4>>2]|0:Y&255)|0;NA(T);k[a+4>>2]=1;i[a+8>>0]=0;k[Z>>2]=2804;k[ba>>2]=2824;k[$>>2]=2856;NA(_);br($);Ar(Z,2836);Zq(ba);break c}case 142:{Oa(16605,15693,425,29764);break}case 144:{Oa(16605,15693,425,29764);break}}}else N=147;while(0);do if((N|0)==147){c=vi(C)|0;k[w>>2]=c;c=vi(ba)|0;k[a+300>>2]=c;c=a+292|0;an(a,M,a+288|0,c,K);bn(a,M,C,K);k[a+60>>2]=L;k[a+64>>2]=M;k[a+72>>2]=k[a+172>>2];k[a+76>>2]=k[x>>2];k[a+80>>2]=k[a+180>>2];k[a+84>>2]=k[z>>2];if((M|0)<=-1)Oa(16605,15693,425,29764);if((k[A>>2]|0)>(M|0)){Z=k[B>>2]|0;k[a+68>>2]=k[Z+(M<<2)>>2];k[a+88>>2]=Z;k[a+92>>2]=k[K>>2];Z=k[c>>2]|0;_=k[y>>2]|0;$=k[a+220>>2]|0;ba=k[a+212>>2]|0;i[a+96>>0]=0;k[a+100>>2]=M;k[a+104>>2]=L;k[a+108>>2]=0;k[a+112>>2]=Z;k[a+116>>2]=_;k[a+120>>2]=$;k[a+124>>2]=ba;k[a+128>>2]=0;k[a+4>>2]=0;i[a+8>>0]=1;break}else Oa(16605,15693,425,29764)}while(0);c=k[ca>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[da>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ea>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[fa>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ga>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ha>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ia>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ja>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ka>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[la>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[ma>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);c=k[na>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);u=oa;return}function Qm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0;s=u;u=u+256|0;i=s;l=s+176|0;r=s+168|0;q=s+160|0;if(k[b+16>>2]|0)Oa(18558,18701,130,29764);g=k[b+8>>2]|0;n=k[b+4>>2]|0;h=k[b+12>>2]|0;h=(k[h+(n<<2)>>2]|0)-(k[h>>2]|0)|0;if((n|g|h|0)<0)f=-1;else f=(((g<<4)+16|0)>>>2)+n+(((n*24|0)+24|0)>>>2)+(h<<1)+((h|0)/5|0)|0;iF(i+16|0,0,144)|0;p[i>>3]=.5;p[i+8>>3]=.5;k[r>>2]=0;o=r+4|0;k[o>>2]=0;Ef(r,n+1|0);k[q>>2]=0;j=q+4|0;k[j>>2]=0;Ef(q,f);a:do if((n|0)>=0){d=k[b+12>>2]|0;e=k[r>>2]|0;a=0;while(1){if((k[o>>2]|0)<=(a|0))break;k[e+(a<<2)>>2]=k[d+(a<<2)>>2];if((a|0)<(n|0))a=a+1|0;else break a}Oa(16605,15693,425,29764)}while(0);b:do if((h|0)>0){d=k[b+24>>2]|0;e=k[q>>2]|0;a=0;while(1){if((k[j>>2]|0)<=(a|0))break;k[e+(a<<2)>>2]=k[d+(a<<2)>>2];a=a+1|0;if((a|0)>=(h|0)){m=e;break b}}Oa(16605,15693,425,29764)}else m=k[q>>2]|0;while(0);if(!(fi(g,n,f,m,k[r>>2]|0,i,l)|0))Oa(18783,18701,148,29764);Ef(c,n);c:do if((n|0)>0){b=k[r>>2]|0;f=c+4|0;d=k[c>>2]|0;a=0;while(1){if((k[o>>2]|0)<=(a|0)){a=26;break}e=k[b+(a<<2)>>2]|0;if(!((e|0)>-1?(k[f>>2]|0)>(e|0):0)){a=28;break}k[d+(e<<2)>>2]=a;a=a+1|0;if((a|0)>=(n|0))break c}if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==28)Oa(16605,15693,425,29764)}while(0);a=k[q>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[r>>2]|0;if(!a){u=s;return}Pq(k[a+-4>>2]|0);u=s;return}function Rm(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+64|0;z=A+48|0;y=A+40|0;i=A+8|0;j=A+4|0;l=A;f=a+4|0;v=k[f>>2]|0;w=k[a+8>>2]|0;h=(w|0)<(v|0)?w:v;k[z>>2]=0;x=z+4|0;k[x>>2]=0;Ef(z,v);e=k[x>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);if(e|0)iF(k[z>>2]|0,0,e<<2|0)|0;k[y>>2]=0;t=y+4|0;k[t>>2]=0;Ef(y,v);e=k[t>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);if(e|0)iF(k[y>>2]|0,0,e<<2|0)|0;Ef(b,k[f>>2]|0);Ef(c,w);s=c+4|0;g=k[s>>2]|0;if((g|0)<=-1)Oa(11919,12068,74,12145);e=k[c>>2]|0;if(g){f=0;do{k[e+(f<<2)>>2]=v;f=f+1|0}while((f|0)!=(g|0));e=k[c>>2]|0}k[i>>2]=e;k[i+4>>2]=h;if(!((h|0)>-1|(e|0)==0))Oa(13818,13988,175,14058);k[i+12>>2]=c;k[i+16>>2]=0;r=k[s>>2]|0;k[i+24>>2]=r;if((h|0)<0|(r|0)<(h|0))Oa(14177,13744,147,13812);k[j>>2]=0;k[l>>2]=h+-1;gi(i,h,j,l)|0;m=(v|0)>0;a:do if(m){i=k[a+24>>2]|0;j=k[a+12>>2]|0;l=k[a+16>>2]|0;n=(l|0)==0;b:do if(!d){g=0;c:while(1){e=k[j+(g<<2)>>2]|0;if(n)h=k[j+(g+1<<2)>>2]|0;else h=(k[l+(g<<2)>>2]|0)+e|0;if((e|0)<(h|0))do{f=k[i+(e<<2)>>2]|0;if(!((f|0)>-1?(k[s>>2]|0)>(f|0):0))break c;r=(k[c>>2]|0)+(f<<2)|0;q=k[r>>2]|0;k[r>>2]=(g|0)<(q|0)?g:q;e=e+1|0}while((e|0)<(h|0));g=g+1|0;if((g|0)>=(v|0))break b}Oa(16605,15693,425,29764)}else{h=0;d:while(1){e=k[d+(h<<2)>>2]|0;f=k[j+(e<<2)>>2]|0;if(n)g=k[j+(e+1<<2)>>2]|0;else g=(k[l+(e<<2)>>2]|0)+f|0;if((f|0)<(g|0)){e=f;do{f=k[i+(e<<2)>>2]|0;if(!((f|0)>-1?(k[s>>2]|0)>(f|0):0))break d;r=(k[c>>2]|0)+(f<<2)|0;q=k[r>>2]|0;k[r>>2]=(h|0)<(q|0)?h:q;e=e+1|0}while((e|0)<(g|0))}h=h+1|0;if((h|0)>=(v|0))break b}Oa(16605,15693,425,29764)}while(0);if(m){o=b+4|0;p=(d|0)==0;q=a+24|0;r=a+12|0;a=a+16|0;m=0;e:while(1){h=(m|0)>=(w|0);if((k[t>>2]|0)<=(m|0)){e=43;break}k[(k[y>>2]|0)+(m<<2)>>2]=m;if((k[x>>2]|0)<=(m|0)){e=45;break}k[(k[z>>2]|0)+(m<<2)>>2]=m;if((k[o>>2]|0)<=(m|0)){e=47;break}k[(k[b>>2]|0)+(m<<2)>>2]=v;if(p)e=m;else e=k[d+(m<<2)>>2]|0;n=k[q>>2]|0;f=k[r>>2]|0;i=k[f+(e<<2)>>2]|0;g=k[a>>2]|0;if(!g)l=k[f+(e+1<<2)>>2]|0;else l=(k[g+(e<<2)>>2]|0)+i|0;f=(i|0)<(l|0);if(f|h^1){j=m;while(1){if(f)e=k[n+(i<<2)>>2]|0;else e=m;h=h|(e|0)==(m|0);if(!((e|0)>-1?(k[s>>2]|0)>(e|0):0)){e=58;break e}e=k[(k[c>>2]|0)+(e<<2)>>2]|0;do if((e|0)<(m|0)){e=hi(e,y)|0;if(!((e|0)>-1?(k[x>>2]|0)>(e|0):0)){e=61;break e}f=(k[z>>2]|0)+(e<<2)|0;g=k[f>>2]|0;if((g|0)==(m|0)){e=j;break}if(!((g|0)>-1?(k[o>>2]|0)>(g|0):0)){e=64;break e}k[(k[b>>2]|0)+(g<<2)>>2]=m;if(!((j|0)>-1?(k[t>>2]|0)>(j|0):0)){e=66;break e}k[(k[y>>2]|0)+(j<<2)>>2]=e;if((k[x>>2]|0)<=(e|0)){e=68;break e}k[f>>2]=m}else e=j;while(0);i=i+1|0;f=(i|0)<(l|0);if(!(f|h^1))break;else j=e}}m=m+1|0;if((m|0)>=(v|0))break a}if((e|0)==43)Oa(16605,15693,425,29764);else if((e|0)==45)Oa(16605,15693,425,29764);else if((e|0)==47)Oa(16605,15693,425,29764);else if((e|0)==58)Oa(16605,15693,425,29764);else if((e|0)==61)Oa(16605,15693,425,29764);else if((e|0)==64)Oa(16605,15693,425,29764);else if((e|0)==66)Oa(16605,15693,425,29764);else if((e|0)==68)Oa(16605,15693,425,29764)}}while(0);e=k[y>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);e=k[z>>2]|0;if(!e){u=A;return 0}Pq(k[e+-4>>2]|0);u=A;return 0}function Sm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=h+88|0;k[q>>2]=0;n=d+1|0;j=(aa(n,f)|0)/(c|0)|0;j=aa((j|0)>(b|0)?b:j,c)|0;o=h+52|0;k[o>>2]=j;p=h+80|0;k[p>>2]=j;f=(aa((f|0)>4?f:4,n)|0)/4|0;n=h+48|0;k[n>>2]=f;if((e|0)==-1){r=c+20+(c*20|0)+((aa((g<<1)+7|0,b)|0)+f+j<<2)+(j+(aa(g+1|0,b)|0)+j<<4)|0;return r|0}b=c+1|0;Ef(h,b);Ef(h+8|0,b);Ef(h+40|0,b);Ef(h+32|0,b);Ef(h+72|0,b);b=h+16|0;j=h+20|0;c=h+60|0;e=h+28|0;g=h+68|0;l=h+56|0;m=h+24|0;f=h+64|0;do{if(!((((cn(a,b,o,0,0,q)|0)>=0?(cn(a,l,p,0,0,q)|0)>=0:0)?(dn(a,m,n,0,0,q)|0)>=0:0)?(dn(a,f,p,0,1,q)|0)>=0:0))r=8;if((r|0)==8?(r=0,i=(k[o>>2]|0)/2|0,k[o>>2]=i,k[p>>2]=(k[p>>2]|0)/2|0,k[n>>2]=(k[n>>2]|0)/2|0,(i|0)<(d|0)):0){r=11;break}}while((k[j>>2]|0)==0|(k[c>>2]|0)==0|(k[e>>2]|0)==0|(k[g>>2]|0)==0);if((r|0)==11)return i|0;k[q>>2]=(k[q>>2]|0)+1;r=0;return r|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;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=u;u=u+32|0;B=C+24|0;A=C+16|0;z=C+8|0;y=C;k[B>>2]=0;n=B+4|0;k[n>>2]=0;ei(b,c,B);j=b+1|0;k[A>>2]=0;v=A+4|0;k[v>>2]=0;Ef(A,j);a:do if((b|0)>=0){g=k[B>>2]|0;h=k[A>>2]|0;a=0;while(1){if((k[n>>2]|0)<=(a|0)){a=5;break}i=k[g+(a<<2)>>2]|0;if(!((i|0)>-1?(k[v>>2]|0)>(i|0):0)){a=7;break}k[h+(i<<2)>>2]=a;if((a|0)<(b|0))a=a+1|0;else break a}if((a|0)==5)Oa(16605,15693,425,29764);else if((a|0)==7)Oa(16605,15693,425,29764)}while(0);k[z>>2]=0;o=z+4|0;k[o>>2]=0;Ef(z,b);k[y>>2]=0;t=y+4|0;k[t>>2]=0;Ef(y,j);q=(b|0)>0;b:do if(q){h=c+4|0;i=k[c>>2]|0;j=k[B>>2]|0;l=k[z>>2]|0;g=0;while(1){if((k[h>>2]|0)<=(g|0)){a=17;break}m=k[i+(g<<2)>>2]|0;if((m|0)<=-1){a=20;break}a=k[n>>2]|0;if((a|0)<=(m|0)){a=20;break}if((a|0)<=(g|0)){a=22;break}a=k[j+(g<<2)>>2]|0;if(!((a|0)>-1?(k[o>>2]|0)>(a|0):0)){a=24;break}k[l+(a<<2)>>2]=k[j+(m<<2)>>2];g=g+1|0;if((g|0)>=(b|0)){w=h;x=c;p=i;break b}}if((a|0)==17)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==22)Oa(16605,15693,425,29764);else if((a|0)==24)Oa(16605,15693,425,29764)}else{w=c+4|0;x=c;p=k[c>>2]|0}while(0);g=k[w>>2]|0;if((k[t>>2]|0)!=(g|0)?(Ng(y,g,1),(k[t>>2]|0)!=(g|0)):0)Oa(12160,12207,721,12285);h=k[y>>2]|0;if((g|0)>0){a=0;do{k[h+(a<<2)>>2]=k[p+(a<<2)>>2];a=a+1|0}while((a|0)!=(g|0))}i=k[z>>2]|0;g=k[o>>2]|0;if((k[w>>2]|0)!=(g|0)?(Ng(c,g,1),(k[w>>2]|0)!=(g|0)):0)Oa(12160,12207,721,12285);h=k[x>>2]|0;if((g|0)>0){a=0;do{k[h+(a<<2)>>2]=k[i+(a<<2)>>2];a=a+1|0}while((a|0)!=(g|0))}s=f+4|0;a=k[s>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[f>>2]|0,-1,a<<2|0)|0;r=e+4|0;a=k[r>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[e>>2]|0,0,a<<2|0)|0;c:do if(q){g=k[x>>2]|0;h=k[e>>2]|0;a=0;while(1){if((k[w>>2]|0)<=(a|0)){a=42;break}i=k[g+(a<<2)>>2]|0;if((i|0)!=(b|0)){j=k[r>>2]|0;if((j|0)<=(a|0)){a=45;break}if(!((i|0)>-1&(j|0)>(i|0))){a=47;break}p=h+(i<<2)|0;k[p>>2]=(k[h+(a<<2)>>2]|0)+1+(k[p>>2]|0)}a=a+1|0;if((a|0)>=(b|0)){a=50;break}}if((a|0)==42)Oa(16605,15693,425,29764);else if((a|0)==45)Oa(16605,15693,425,29764);else if((a|0)==47)Oa(16605,15693,425,29764);else if((a|0)==50){if(!q)break;o=0;d:while(1){h=k[w>>2]|0;if((h|0)<=(o|0)){a=54;break}i=k[x>>2]|0;j=k[r>>2]|0;p=k[e>>2]|0;a=o;while(1){g=k[i+(a<<2)>>2]|0;if((g|0)==(b|0))break;if(!((g|0)>-1&(j|0)>(g|0))){a=58;break d}if((k[p+(g<<2)>>2]|0)>=(d|0))break;if((h|0)>(g|0))a=g;else{a=61;break d}}m=(a|0)<(o|0);n=k[v>>2]|0;if(m)g=b;else{i=k[A>>2]|0;j=(o|0)>-1;g=b;h=o;while(1){if(!(j&(n|0)>(h|0))){a=67;break d}q=k[i+(h<<2)>>2]|0;g=(q|0)<(g|0)?q:g;if((h|0)<(a|0))h=h+1|0;else break}}if(!((a|0)>-1&(n|0)>(a|0))){a=65;break}l=k[A>>2]|0;h=k[l+(a<<2)>>2]|0;e:do if((h-g|0)==(a-o|0)){if(!((g|0)>-1?(k[s>>2]|0)>(g|0):0)){a=73;break d}k[(k[f>>2]|0)+(g<<2)>>2]=h}else{if(m)break;i=k[f>>2]|0;j=(o|0)>-1;if(j&(n|0)>(o|0))g=o;else{a=75;break d}while(1){h=k[l+(g<<2)>>2]|0;if((k[r>>2]|0)<=(g|0)){a=77;break d}if(!(k[p+(g<<2)>>2]|0)){if(!((h|0)>-1?(k[s>>2]|0)>(h|0):0)){a=80;break d}k[i+(h<<2)>>2]=h}if((g|0)>=(a|0))break e;g=g+1|0;if(!(j&(k[v>>2]|0)>(g|0))){a=75;break d}}}while(0);h=k[r>>2]|0;i=k[e>>2]|0;j=(a|0)>-2;do{a=a+1|0;if(!(j&(h|0)>(a|0))){a=86;break d}g=(a|0)<(b|0)}while(g&(k[i+(a<<2)>>2]|0)!=0);if(g)o=a;else break c}switch(a|0){case 54:{Oa(16605,15693,425,29764);break}case 58:{Oa(16605,15693,425,29764);break}case 61:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 73:{Oa(16605,15693,425,29764);break}case 75:{Oa(16605,15693,425,29764);break}case 77:{Oa(16605,15693,425,29764);break}case 80:{Oa(16605,15693,425,29764);break}case 86:{Oa(16605,15693,425,29764);break}}}}while(0);i=k[y>>2]|0;h=k[t>>2]|0;if((k[w>>2]|0)!=(h|0)?(Ng(c,h,1),(k[w>>2]|0)!=(h|0)):0)Oa(12160,12207,721,12285);g=k[x>>2]|0;if((h|0)>0){a=0;do{k[g+(a<<2)>>2]=k[i+(a<<2)>>2];a=a+1|0}while((a|0)!=(h|0))}a=k[y>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[z>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[A>>2]|0;if(a|0)Pq(k[a+-4>>2]|0);a=k[B>>2]|0;if(!a){u=C;return}Pq(k[a+-4>>2]|0);u=C;return}function Um(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=f+4|0;a=k[p>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[f>>2]|0,-1,a<<2|0)|0;o=e+4|0;a=k[o>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(a|0)iF(k[e>>2]|0,0,a<<2|0)|0;m=(b|0)>0;if(!m)return;g=c+4|0;h=k[c>>2]|0;i=k[e>>2]|0;a=0;while(1){if((k[g>>2]|0)<=(a|0)){a=14;break}j=k[h+(a<<2)>>2]|0;if((j|0)!=(b|0)){l=k[o>>2]|0;if((l|0)<=(a|0)){a=17;break}if(!((j|0)>-1&(l|0)>(j|0))){a=19;break}n=i+(j<<2)|0;k[n>>2]=(k[i+(a<<2)>>2]|0)+1+(k[n>>2]|0)}a=a+1|0;if((a|0)>=(b|0)){a=11;break}}if((a|0)==11){if(!m)return;l=c+4|0;h=0;m=k[o>>2]|0;n=k[e>>2]|0;a:while(1){i=k[l>>2]|0;j=k[c>>2]|0;a=h;while(1){if((i|0)<=(a|0)){a=26;break a}g=k[j+(a<<2)>>2]|0;if((g|0)==(b|0))break;if(!((g|0)>-1&(m|0)>(g|0))){a=29;break a}if((k[n+(g<<2)>>2]|0)<(d|0))a=g;else break}if(!((h|0)>-1?(k[p>>2]|0)>(h|0):0)){a=32;break}k[(k[f>>2]|0)+(h<<2)>>2]=a;m=k[o>>2]|0;n=k[e>>2]|0;h=(a|0)>-2;do{a=a+1|0;if(!(h&(m|0)>(a|0))){a=35;break a}g=(a|0)<(b|0)}while(g&(k[n+(a<<2)>>2]|0)!=0);if(!g){a=24;break}else h=a}if((a|0)==24)return;else if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==29)Oa(16605,15693,425,29764);else if((a|0)==32)Oa(16605,15693,425,29764);else if((a|0)==35)Oa(16605,15693,425,29764)}else if((a|0)==14)Oa(16605,15693,425,29764);else if((a|0)==17)Oa(16605,15693,425,29764);else if((a|0)==19)Oa(16605,15693,425,29764)}function Vm(a,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=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;P=u;u=u+48|0;K=P+32|0;L=P+24|0;M=P+12|0;N=P;r=(k[n>>2]|0)+(b<<2)|0;s=(b|0)>-1;if(!(s|(r|0)==0))Oa(13818,13988,175,14058);O=n+4|0;if((b|0)<0?1:((k[O>>2]|0)-b|0)<(b|0))Oa(14177,13744,147,13812);k[g>>2]=0;k[L>>2]=d;k[L+4>>2]=r;I=d+c|0;if((c|0)<=0){u=P;return}D=l+4|0;E=h+4|0;F=e+20|0;G=e+24|0;H=e+12|0;A=e+16|0;B=M+4|0;C=N+4|0;if(s){x=d;a:while(1){r=aa(x-d|0,b)|0;k[K>>2]=r;y=(k[l>>2]|0)+(r<<2)|0;if((r|b|0)<0?1:((k[D>>2]|0)-b|0)<(r|0)){r=24;break}z=(k[h>>2]|0)+(r<<4)|0;if(((k[E>>2]|0)-b|0)<(r|0)){r=28;break}v=k[F>>2]|0;w=k[G>>2]|0;r=k[H>>2]|0;e=k[r+(x<<2)>>2]|0;c=k[A>>2]|0;if(!c)t=k[r+(x+1<<2)>>2]|0;else t=(k[c+(x<<2)>>2]|0)+e|0;if((e|0)<(t|0))do{r=k[w+(e<<2)>>2]|0;if(!((r|0)>-1&(r|0)<(b|0))){r=35;break a}s=v+(e<<4)|0;c=z+(r<<4)|0;k[c>>2]=k[s>>2];k[c+4>>2]=k[s+4>>2];k[c+8>>2]=k[s+8>>2];k[c+12>>2]=k[s+12>>2];c=k[O>>2]|0;if((c|0)<=(r|0)){r=37;break a}s=k[n>>2]|0;if((k[s+(r<<2)>>2]|0)!=(x|0)){k[M>>2]=y;k[B>>2]=b;k[N>>2]=s;k[C>>2]=c;if(!((s|0)==0|(c|0)>-1)){r=40;break a}en(a,x,f,g,i,j,M,m,N,o,p,q,K,r,L)}e=e+1|0}while((e|0)<(t|0));x=x+1|0;if((x|0)>=(I|0)){r=20;break}}if((r|0)==20){u=P;return}else if((r|0)==24)Oa(14177,13744,147,13812);else if((r|0)==28)Oa(14177,13744,147,13812);else if((r|0)==35)Oa(16605,15693,425,29764);else if((r|0)==37)Oa(16605,15693,425,29764);else if((r|0)==40)Oa(13818,13988,175,14058)}else J=d;b:while(1){r=aa(J-d|0,b)|0;k[K>>2]=r;if((k[l>>2]|0)+(r<<2)|0){r=22;break}if((r|b|0)<0?1:((k[D>>2]|0)-b|0)<(r|0)){r=24;break}if((k[h>>2]|0)+(r<<4)|0){r=26;break}if(((k[E>>2]|0)-b|0)<(r|0)){r=28;break}v=k[F>>2]|0;w=k[G>>2]|0;c=k[H>>2]|0;e=k[c+(J<<2)>>2]|0;r=k[A>>2]|0;if(!r)t=k[c+(J+1<<2)>>2]|0;else t=(k[r+(J<<2)>>2]|0)+e|0;if((e|0)<(t|0))do{r=k[w+(e<<2)>>2]|0;if(!((r|0)>-1&(r|0)<(b|0))){r=35;break b}z=v+(e<<4)|0;c=0+(r<<4)|0;k[c>>2]=k[z>>2];k[c+4>>2]=k[z+4>>2];k[c+8>>2]=k[z+8>>2];k[c+12>>2]=k[z+12>>2];c=k[O>>2]|0;if((c|0)<=(r|0)){r=37;break b}s=k[n>>2]|0;if((k[s+(r<<2)>>2]|0)!=(J|0)){k[M>>2]=0;k[B>>2]=b;k[N>>2]=s;k[C>>2]=c;if(!((s|0)==0|(c|0)>-1)){r=40;break b}en(a,J,f,g,i,j,M,m,N,o,p,q,K,r,L)}e=e+1|0}while((e|0)<(t|0));J=J+1|0;if((J|0)>=(I|0)){r=20;break}}if((r|0)==20){u=P;return}else if((r|0)==22)Oa(13818,13988,175,14058);else if((r|0)==24)Oa(14177,13744,147,13812);else if((r|0)==26)Oa(13818,13988,175,14058);else if((r|0)==28)Oa(14177,13744,147,13812);else if((r|0)==35)Oa(16605,15693,425,29764);else if((r|0)==37)Oa(16605,15693,425,29764);else if((r|0)==40)Oa(13818,13988,175,14058)}function Wm(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;ta=u;u=u+96|0;K=ta+56|0;L=ta+52|0;M=ta+32|0;N=ta+24|0;O=ta;if((e|0)<=0){u=ta;return}P=h+4|0;Q=j+12|0;R=j+8|0;S=j+4|0;T=j+44|0;U=j+40|0;V=d+c|0;W=(c|0)>0;X=(b|0)>-1;Y=i+4|0;Z=M+4|0;_=M+8|0;$=M+12|0;ba=f+4|0;ca=j+36|0;da=j+32|0;ra=j+28|0;sa=j+24|0;ea=j+16|0;I=O+4|0;J=O+8|0;fa=O+12|0;ga=N+4|0;ha=g+4|0;ia=M+12|0;ja=M+12|0;ka=K+4|0;la=K+12|0;ma=K+16|0;na=K+24|0;oa=j+16|0;pa=j+24|0;G=e;H=0;a:while(1){if((G|0)<1?1:(k[P>>2]|0)<(G|0)){a=4;break}G=G+-1|0;qa=k[(k[h>>2]|0)+(G<<2)>>2]|0;if(!((qa|0)>-1?(k[Q>>2]|0)>(qa|0):0)){a=6;break}a=k[(k[R>>2]|0)+(qa<<2)>>2]|0;if(!((a|0)>-1?(k[S>>2]|0)>(a|0):0)){a=8;break}E=k[(k[j>>2]|0)+(a<<2)>>2]|0;r=qa-E|0;B=E+1|0;if((E|0)<=-2){a=11;break}a=k[T>>2]|0;if((a|0)<=(B|0)){a=11;break}l=k[U>>2]|0;if(!((E|0)>-1&(a|0)>(E|0))){a=13;break}D=k[l+(E<<2)>>2]|0;F=(k[l+(B<<2)>>2]|0)-D+~r|0;if(W){o=k[i>>2]|0;q=(k[Y>>2]|0)-b|0;l=(qa|0)<(b|0);if(!X){a=20;break}if(l){n=d;a=0;l=0}else{a=19;break}while(1){m=aa(n-d|0,b)|0;if((m|b|0)<0|(q|0)<(m|0)){a=27;break a}A=k[o+(m<<2)+(qa<<2)>>2]|0;C=(A|0)==-1;A=qa-A+1|0;l=C|(A|0)<(l|0)?l:A;a=((C^1)&1)+a|0;n=n+1|0;if((n|0)>=(V|0)){A=a;C=l;break}}}else{A=0;C=0}if((r|0)>0){a=k[g>>2]|0;if((C|0)<=-1){a=33;break}k[M>>2]=a;k[Z>>2]=C;k[_>>2]=A;if(!((A|C|0)>-1|(a|0)==0)){a=35;break}if(a&15|0?(aa(C<<4,A)|0)>>>0>=16:0){a=38;break}k[$>>2]=C;if(W){y=(qa|0)<(b|0);z=D-E|0;x=C+-1|0;a=0;w=d;do{l=aa(w-d|0,b)|0;m=(k[i>>2]|0)+(l<<2)|0;if(!(X|(m|0)==0)){a=42;break a}if((l|b|0)<0?1:((k[Y>>2]|0)-b|0)<(l|0)){a=44;break a}v=(k[f>>2]|0)+(l<<4)|0;if(!(X|(v|0)==0)){a=46;break a}if(((k[ba>>2]|0)-b|0)<(l|0)){a=48;break a}if(!y){a=50;break a}l=k[m+(qa<<2)>>2]|0;if((l|0)!=-1){t=qa-l|0;if((k[ca>>2]|0)<=(E|0)){a=53;break a}k[L>>2]=k[(k[da>>2]|0)+(E<<2)>>2];r=z+l|0;s=x-t|0;if((s|0)>0){m=k[Z>>2]|0;n=k[M>>2]|0;o=aa(k[$>>2]|0,a)|0;if((a|0)>-1?(k[_>>2]|0)>(a|0):0)l=0;else{a=64;break a}do{if((m|0)<=(l|0)){a=64;break a}q=n+(o+l<<4)|0;l=l+1|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0}while((l|0)<(s|0))}if((t|0)>=0){q=(r|0)>-1;if((a|0)>-1){o=0;l=r}else{a=66;break a}while(1){if(!(q&(k[ra>>2]|0)>(l|0))){a=67;break a}m=k[(k[sa>>2]|0)+(l<<2)>>2]|0;if(!((m|0)>-1&(m|0)<(b|0))){a=69;break a}n=o+s|0;if(!(((n|0)>-1?(k[Z>>2]|0)>(n|0):0)&(k[_>>2]|0)>(a|0))){a=70;break a}m=v+(m<<4)|0;r=(k[M>>2]|0)+((aa(k[$>>2]|0,a)|0)+n<<4)|0;k[r>>2]=k[m>>2];k[r+4>>2]=k[m+4>>2];k[r+8>>2]=k[m+8>>2];k[r+12>>2]=k[m+12>>2];if((o|0)<(t|0)){o=o+1|0;l=l+1|0}else break}}a=a+1|0}w=w+1|0}while((w|0)<(V|0))}a=k[ca>>2]|0;if((a|0)<=(E|0)){a=73;break}l=k[da>>2]|0;m=l+(E<<2)|0;n=k[m>>2]|0;k[L>>2]=n;if((a|0)<=(B|0)){a=75;break}q=(k[l+(B<<2)>>2]|0)-(k[m>>2]|0)|0;a=qa+1-E-C|0;a=n+a+(aa(q,a)|0)|0;k[L>>2]=a;if((q|0)<=-1){a=77;break}k[O>>2]=(k[ea>>2]|0)+(a<<4);k[I>>2]=C;k[J>>2]=C;k[fa>>2]=q;k[N>>2]=O;k[ga>>2]=M;ln(M,N,K);m=(k[L>>2]|0)+C|0;k[L>>2]=m;m=(k[ea>>2]|0)+(m<<4)|0;if(!((C|F|0)>-1|(m|0)==0)){a=79;break}n=aa(C,c)|0;if((k[ha>>2]|0)<=((aa(F,c)|0)+1+n|0)){a=81;break}o=k[g>>2]|0;B=o+(n<<4)|0;if((F|0)<=-1){a=83;break}a=(A|F|0)>-1;if(!(a|(B|0)==0)){a=85;break}if(!a){a=87;break}if((A|0)>0&(F|0)>0){l=F<<4;a=0;do{iF(o+(n+(aa(F,a)|0)<<4)|0,0,l|0)|0;a=a+1|0}while((a|0)!=(A|0))}fn(F,A,C,m,q,k[M>>2]|0,k[$>>2]|0,B,F);if(W){A=(qa|0)<(b|0);y=D-E|0;z=(F|0)>0;x=C+-1|0;a=0;w=d;do{l=aa(w-d|0,b)|0;m=(k[i>>2]|0)+(l<<2)|0;if(!(X|(m|0)==0)){a=94;break a}if((l|b|0)<0?1:((k[Y>>2]|0)-b|0)<(l|0)){a=96;break a}v=(k[f>>2]|0)+(l<<4)|0;if(!(X|(v|0)==0)){a=98;break a}if(((k[ba>>2]|0)-b|0)<(l|0)){a=100;break a}if(!A){a=102;break a}l=k[m+(qa<<2)>>2]|0;if((l|0)!=-1){s=qa-l|0;l=y+l|0;if((s|0)>=0){q=x-s|0;r=(l|0)>-1;o=0;m=l;while(1){l=m+1|0;if(!(r&(k[ra>>2]|0)>(m|0))){a=109;break a}m=k[(k[sa>>2]|0)+(m<<2)>>2]|0;n=q+o|0;if(!((m|0)>-1&(m|0)<(b|0))){a=111;break a}D=(k[M>>2]|0)+((aa(k[ia>>2]|0,a)|0)+n<<4)|0;E=v+(m<<4)|0;k[E>>2]=k[D>>2];k[E+4>>2]=k[D+4>>2];k[E+8>>2]=k[D+8>>2];k[E+12>>2]=k[D+12>>2];E=(k[M>>2]|0)+((aa(k[ja>>2]|0,a)|0)+n<<4)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;if((o|0)<(s|0)){o=o+1|0;m=l}else break}}if(z){q=k[ra>>2]|0;r=k[sa>>2]|0;s=aa(a,F)|0;t=(l|0)>-1;o=0;while(1){if(!(t&(q|0)>(l|0))){a=115;break a}m=k[r+(l<<2)>>2]|0;n=B+(o+s<<4)|0;if(!((m|0)>-1&(m|0)<(b|0))){a=117;break a}D=v+(m<<4)|0;p[D>>3]=+p[D>>3]-+p[n>>3];E=n+8|0;D=D+8|0;p[D>>3]=+p[D>>3]-+p[E>>3];p[n>>3]=0.0;p[E>>3]=0.0;o=o+1|0;if((o|0)>=(F|0))break;else l=l+1|0}}a=a+1|0}w=w+1|0}while((w|0)<(V|0))}}else if(W){s=(qa|0)<(b|0);r=d;do{a=aa(r-d|0,b)|0;l=(k[i>>2]|0)+(a<<2)|0;if(!(X|(l|0)==0)){a=122;break a}if((a|b|0)<0?1:((k[Y>>2]|0)-b|0)<(a|0)){a=124;break a}C=(k[f>>2]|0)+(a<<4)|0;k[K>>2]=C;k[ka>>2]=b;if(!(X|(C|0)==0)){a=126;break a}k[la>>2]=f;k[ma>>2]=a;C=k[ba>>2]|0;k[na>>2]=C;if((C-b|0)<(a|0)){a=128;break a}if(!s){a=130;break a}n=k[l+(qa<<2)>>2]|0;b:do if((n|0)!=-1){o=qa-n|0;q=o+1|0;a=k[ca>>2]|0;if((a|0)<=(E|0)){a=133;break a}l=k[da>>2]|0;m=l+(E<<2)|0;k[L>>2]=k[m>>2];if((a|0)<=(B|0)){a=135;break a}l=(k[l+(B<<2)>>2]|0)-(k[m>>2]|0)|0;a=n-E|0;switch(o|0){case 0:{gn(q,K,g,oa,L,l,F,pa,D,a);break b}case 1:{hn(q,K,g,oa,L,l,F,pa,D,a);break b}default:if((q|0)==3){jn(3,K,g,oa,L,l,F,pa,D,a);break b}else{kn(q,K,g,oa,L,l,F,pa,D,a);break b}}}while(0);r=r+1|0}while((r|0)<(V|0))}H=H+1|0;if((H|0)>=(e|0)){a=144;break}}switch(a|0){case 4:{Oa(16605,15693,425,29764);break}case 6:{Oa(16605,15693,425,29764);break}case 8:{Oa(16605,15693,425,29764);break}case 11:{Oa(16605,15693,425,29764);break}case 13:{Oa(16605,15693,425,29764);break}case 19:{if((q|b|0)<0)Oa(14177,13744,147,13812);else Oa(16605,15693,425,29764);break}case 20:{a=(o|0)==0;if(l){if(!a)Oa(13818,13988,175,14058);if((q|b|0)<0)Oa(14177,13744,147,13812);else sb()}else{if(!a)Oa(13818,13988,175,14058);if((q|b|0)<0)Oa(14177,13744,147,13812);else Oa(16605,15693,425,29764)}break}case 27:{Oa(14177,13744,147,13812);break}case 33:{Oa(19264,19297,66,19366);break}case 35:{Oa(13818,13988,175,14058);break}case 38:{Oa(19502,13988,191,19698);break}case 42:{Oa(13818,13988,175,14058);break}case 44:{Oa(14177,13744,147,13812);break}case 46:{Oa(13818,13988,175,14058);break}case 48:{Oa(14177,13744,147,13812);break}case 50:{Oa(16605,15693,425,29764);break}case 53:{Oa(16605,15693,425,29764);break}case 64:{Oa(15640,15693,365,29764);break}case 66:{if(!(q&(k[ra>>2]|0)>(r|0)))Oa(16605,15693,425,29764);ta=k[(k[sa>>2]|0)+(r<<2)>>2]|0;if((ta|0)>-1&(ta|0)<(b|0))Oa(15640,15693,365,29764);else Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 69:{Oa(16605,15693,425,29764);break}case 70:{Oa(15640,15693,365,29764);break}case 73:{Oa(16605,15693,425,29764);break}case 75:{Oa(16605,15693,425,29764);break}case 77:{Oa(19264,19297,66,19366);break}case 79:{Oa(13818,13988,175,14058);break}case 81:{Oa(19373,19405,145,19491);break}case 83:{Oa(19264,19297,66,19366);break}case 85:{Oa(13818,13988,175,14058);break}case 87:{Oa(11919,12068,74,12145);break}case 94:{Oa(13818,13988,175,14058);break}case 96:{Oa(14177,13744,147,13812);break}case 98:{Oa(13818,13988,175,14058);break}case 100:{Oa(14177,13744,147,13812);break}case 102:{Oa(16605,15693,425,29764);break}case 109:{Oa(16605,15693,425,29764);break}case 111:{Oa(16605,15693,425,29764);break}case 115:{Oa(16605,15693,425,29764);break}case 117:{Oa(16605,15693,425,29764);break}case 122:{Oa(13818,13988,175,14058);break}case 124:{Oa(14177,13744,147,13812);break}case 126:{Oa(13818,13988,175,14058);break}case 128:{Oa(14177,13744,147,13812);break}case 130:{Oa(16605,15693,425,29764);break}case 133:{Oa(16605,15693,425,29764);break}case 135:{Oa(16605,15693,425,29764);break}case 144:{u=ta;return}}}function Xm(a,b,c,d,e,f,g,h,i,j,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=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=u;u=u+48|0;C=J+44|0;F=J+40|0;w=J+24|0;x=J;y=J+12|0;if((c|0)<=-1)Oa(16605,15693,425,29764);G=o+12|0;q=k[G>>2]|0;if((q|0)<=(c|0))Oa(16605,15693,425,29764);z=o+8|0;k[C>>2]=k[(k[z>>2]|0)+(c<<2)>>2];H=o+44|0;if((k[H>>2]|0)<=(c|0))Oa(16605,15693,425,29764);I=o+40|0;k[F>>2]=k[(k[I>>2]|0)+(c<<2)>>2];r=b<<1;A=(k[l>>2]|0)+(r<<2)|0;if(!((b|0)>-1|(A|0)==0))Oa(13818,13988,175,14058);if((r|b|0)<0?1:((k[l+4>>2]|0)-b|0)<(r|0))Oa(14177,13744,147,13812);k[w>>2]=c;k[w+4>>2]=C;k[w+8>>2]=o;k[w+12>>2]=a;do if((b|0)>0){q=g+4|0;r=o+24|0;s=y+4|0;l=0;while(1){if((k[q>>2]|0)<=(l|0)){B=13;break}t=(k[g>>2]|0)+(l<<2)|0;v=k[t>>2]|0;if((v|0)==-1){B=15;break}k[t>>2]=-1;if(!((v|0)>-1&(v|0)<(b|0))){B=20;break}if((k[A+(v<<2)>>2]|0)!=(c|0)){K=i;t=k[K+4>>2]|0;B=x;k[B>>2]=k[K>>2];k[B+4>>2]=t;k[y>>2]=A;k[s>>2]=b;wn(a,c,d,f,r,h,x,j,y,m,n,o,F,v,w)}l=l+1|0;if((l|0)>=(b|0)){B=15;break}}if((B|0)==13)Oa(16605,15693,408,29907);else if((B|0)==15){p=k[G>>2]|0;break}else if((B|0)==20)Oa(16605,15693,425,29764)}else p=q;while(0);if((p|0)<=(c|0))Oa(16605,15693,425,29764);n=k[z>>2]|0;m=k[n+(c<<2)>>2]|0;w=c+1|0;a=c+-1|0;do if(!c){q=0;l=0;B=51}else{if((m|0)<=-1)Oa(16605,15693,425,29764);if((k[o+4>>2]|0)<=(m|0))Oa(16605,15693,425,29764);l=k[(k[o>>2]|0)+(m<<2)>>2]|0;r=k[H>>2]|0;if((r|0)<=(c|0))Oa(16605,15693,425,29764);s=k[I>>2]|0;b=s+(c<<2)|0;t=k[b>>2]|0;if(!((c|0)>0&(r|0)>=(c|0)))Oa(16605,15693,425,29764);v=s+(a<<2)|0;q=k[v>>2]|0;if(!((c-l|0)>=(e|0)?1:((k[F>>2]|0)-t|0)!=(t+-1-q|0))){if((k[C>>2]|0)!=-1){E=m;break}}else k[C>>2]=-1;if((l|0)>=(c+-2|0)){q=c;l=m+1|0;B=51;break}p=l+1|0;if(!((l|0)>-2&(r|0)>(p|0)))Oa(16605,15693,425,29764);l=k[s+(p<<2)>>2]|0;k[v>>2]=l;p=t-q+l|0;if((k[j+4>>2]|0)<(c|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(a<<2)>>2]=p;if((k[H>>2]|0)<=(c|0))Oa(16605,15693,425,29764);k[b>>2]=p;a:do if((q|0)<(k[F>>2]|0)){r=o+28|0;s=k[o+24>>2]|0;t=(q|0)>-1;v=(l|0)>-1;p=l;while(1){if(!t){B=46;break}l=k[r>>2]|0;if((l|0)<=(q|0)){B=46;break}if(!(v&(l|0)>(p|0))){B=48;break}k[s+(p<<2)>>2]=k[s+(q<<2)>>2];q=q+1|0;p=p+1|0;if((q|0)>=(k[F>>2]|0)){D=p;break a}}if((B|0)==46)Oa(16605,15693,425,29764);else if((B|0)==48)Oa(16605,15693,425,29764)}else D=l;while(0);k[F>>2]=D;q=c;l=m+1|0;p=k[G>>2]|0;B=51}while(0);if((B|0)==51){if((p|0)<=(q|0))Oa(16605,15693,425,29764);k[n+(q<<2)>>2]=l;if((l|0)>-2)E=l;else Oa(16605,15693,425,29764)}p=E+1|0;if((k[o+4>>2]|0)<=(p|0))Oa(16605,15693,425,29764);k[(k[o>>2]|0)+(p<<2)>>2]=w;if(!((c|0)>-2?(k[G>>2]|0)>(w|0):0))Oa(16605,15693,425,29764);k[n+(w<<2)>>2]=E;if((k[j+4>>2]|0)<=(c|0))Oa(16605,15693,425,29764);k[(k[j>>2]|0)+(c<<2)>>2]=k[F>>2];if((k[H>>2]|0)>(w|0)){k[(k[I>>2]|0)+(w<<2)>>2]=k[F>>2];u=J;return 0}else Oa(16605,15693,425,29764);return 0}function Ym(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;_=u;u=u+128|0;U=_+104|0;Z=_+88|0;V=_+64|0;W=_+48|0;X=_+32|0;T=_+120|0;Y=_;if((b|0)<=-1)Oa(16605,15693,425,29764);C=i+12|0;if((k[C>>2]|0)<=(b|0))Oa(16605,15693,425,29764);D=i+8|0;N=k[(k[D>>2]|0)+(b<<2)>>2]|0;a:do if((c|0)>0){E=f+4|0;F=i+4|0;G=i+36|0;H=i+32|0;I=i+44|0;J=i+40|0;K=g+4|0;L=i+16|0;M=i+24|0;A=c;B=0;b:while(1){if((A|0)<=0){O=9;break}if((k[E>>2]|0)<(A|0)){O=9;break}A=A+-1|0;q=k[(k[f>>2]|0)+(A<<2)>>2]|0;if(!((q|0)>-1?(k[C>>2]|0)>(q|0):0)){O=11;break}j=k[(k[D>>2]|0)+(q<<2)>>2]|0;do if((N|0)!=(j|0)){if(!((j|0)>-1?(k[F>>2]|0)>(j|0):0)){O=14;break b}j=k[(k[i>>2]|0)+(j<<2)>>2]|0;w=(j|0)<(h|0)?h:j;l=w-j|0;r=k[G>>2]|0;if(!((w|0)>-1&(r|0)>(w|0))){O=16;break b}s=k[H>>2]|0;t=s+(w<<2)|0;k[T>>2]=(k[t>>2]|0)+l;if((j|0)<=-1){O=19;break b}m=k[I>>2]|0;if((m|0)<=(j|0)){O=19;break b}n=k[J>>2]|0;o=k[n+(j<<2)>>2]|0;x=o+l|0;if((k[K>>2]|0)<=(q|0)){O=21;break b}v=k[(k[g>>2]|0)+(q<<2)>>2]|0;v=(v|0)<(h|0)?h:v;y=q-v|0;z=y+1|0;j=j+1|0;if((m|0)<=(j|0)){O=23;break b}m=w+~q-l-o+(k[n+(j<<2)>>2]|0)|0;j=w+1|0;if((r|0)<=(j|0)){O=25;break b}l=(k[s+(j<<2)>>2]|0)-(k[t>>2]|0)|0;j=v-w|0;if(!y){xn(z,d,e,L,T,l,m,M,x,j);break}else{yn(z,d,e,L,T,l,m,M,x,j);break}}while(0);B=B+1|0;if((B|0)>=(c|0)){Q=G;break a}}if((O|0)==9)Oa(16605,15693,425,29764);else if((O|0)==11)Oa(16605,15693,425,29764);else if((O|0)==14)Oa(16605,15693,425,29764);else if((O|0)==16)Oa(16605,15693,425,29764);else if((O|0)==19)Oa(16605,15693,425,29764);else if((O|0)==21)Oa(16605,15693,425,29764);else if((O|0)==23)Oa(16605,15693,425,29764);else if((O|0)==25)Oa(16605,15693,425,29764)}else Q=i+36|0;while(0);if((k[Q>>2]|0)<=(b|0))Oa(16605,15693,425,29764);y=i+32|0;w=k[(k[y>>2]|0)+(b<<2)>>2]|0;if((N|0)<=-1)Oa(16605,15693,425,29764);if((k[i+4>>2]|0)<=(N|0))Oa(16605,15693,425,29764);B=k[(k[i>>2]|0)+(N<<2)>>2]|0;A=B+1|0;if((B|0)<=-2)Oa(16605,15693,425,29764);z=i+44|0;j=k[z>>2]|0;if((j|0)<=(A|0))Oa(16605,15693,425,29764);x=i+40|0;l=k[x>>2]|0;if(!((B|0)>-1&(j|0)>(B|0)))Oa(16605,15693,425,29764);l=(k[l+(A<<2)>>2]|0)+w-(k[l+(B<<2)>>2]|0)|0;m=i+52|0;D=i+16|0;n=i+88|0;while(1){if((l|0)<=(k[m>>2]|0))break;j=cn(a,D,m,w,0,n)|0;if(j|0){O=89;break}}if((O|0)==89){u=_;return j|0}j=k[z>>2]|0;if((j|0)<=(B|0))Oa(16605,15693,425,29764);if((j|0)<=(A|0))Oa(16605,15693,425,29764);l=k[x>>2]|0;m=k[l+(B<<2)>>2]|0;s=i+28|0;t=i+24|0;v=d+4|0;C=i+20|0;o=i+16|0;q=(m|0)>-1;r=(w|0)>-1;j=l+(A<<2)|0;c:do if((m|0)<(k[j>>2]|0)){n=m;j=w;while(1){if(!(q&(k[s>>2]|0)>(n|0))){O=49;break}l=k[(k[t>>2]|0)+(n<<2)>>2]|0;if((l|0)<=-1){O=52;break}if((k[v>>2]|0)<=(l|0)){O=52;break}if(!(r&(k[C>>2]|0)>(j|0))){O=54;break}O=(k[d>>2]|0)+(l<<4)|0;i=(k[o>>2]|0)+(j<<4)|0;k[i>>2]=k[O>>2];k[i+4>>2]=k[O+4>>2];k[i+8>>2]=k[O+8>>2];k[i+12>>2]=k[O+12>>2];if((k[v>>2]|0)<=(l|0)){O=56;break}i=(k[d>>2]|0)+(l<<4)|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;if((k[z>>2]|0)<=(A|0)){O=47;break}n=n+1|0;j=j+1|0;l=k[x>>2]|0;m=l+(A<<2)|0;if((n|0)>=(k[m>>2]|0)){P=j;R=m;S=l;break c}}if((O|0)==47)Oa(16605,15693,425,29764);else if((O|0)==49)Oa(16605,15693,425,29764);else if((O|0)==52)Oa(16605,15693,425,29764);else if((O|0)==54)Oa(16605,15693,425,29764);else if((O|0)==56)Oa(16605,15693,425,29764)}else{P=w;R=j;S=l}while(0);v=b+1|0;if(!((b|0)>-2?(k[Q>>2]|0)>(v|0):0))Oa(16605,15693,425,29764);o=k[y>>2]|0;t=o+(v<<2)|0;k[t>>2]=P;l=(B|0)<(h|0)?h:B;if((l|0)>=(b|0)){Z=0;u=_;return Z|0}n=l-B|0;j=k[z>>2]|0;if((j|0)<=(B|0))Oa(16605,15693,425,29764);m=k[Q>>2]|0;if(!((l|0)>-1&(m|0)>(l|0)))Oa(16605,15693,425,29764);r=(k[o+(l<<2)>>2]|0)+n|0;k[T>>2]=r;if((j|0)<=(A|0))Oa(16605,15693,425,29764);w=b-l|0;s=(k[R>>2]|0)-(w+n)-(k[S+(B<<2)>>2]|0)|0;if((m|0)<=(b|0))Oa(16605,15693,425,29764);j=k[o+(b<<2)>>2]|0;q=j+n|0;if((m|0)<=(v|0))Oa(16605,15693,425,29764);o=(k[t>>2]|0)-j|0;j=k[D>>2]|0;l=j+(r<<4)|0;if((o|0)<=-1)Oa(19264,19297,66,19366);m=(w|0)>-1;if(!(m|(l|0)==0))Oa(13818,13988,175,14058);b=j+(q<<4)|0;k[Y>>2]=b;n=Y+4|0;k[n>>2]=w;if(!(m|(b|0)==0))Oa(13818,13988,175,14058);k[Y+12>>2]=D;k[Y+16>>2]=q;b=k[C>>2]|0;k[Y+24>>2]=b;if((q|w|0)<0|(b-w|0)<(q|0))Oa(14177,13744,147,13812);k[V>>2]=l;k[V+4>>2]=w;k[V+8>>2]=w;k[V+12>>2]=o;k[Z>>2]=V;k[Z+4>>2]=Y;zn(Y,Z,U);j=k[D>>2]|0;m=j+((k[T>>2]|0)+w<<4)|0;if(!((s|w|0)>-1|(m|0)==0))Oa(13818,13988,175,14058);l=q+w|0;j=j+(l<<4)|0;if(!((s|0)>-1|(j|0)==0))Oa(13818,13988,175,14058);if((l|s|0)<0?1:((k[C>>2]|0)-s|0)<(l|0))Oa(14177,13744,147,13812);if((w|0)!=(k[n>>2]|0))Oa(14710,14850,97,14920);Y=k[Y>>2]|0;p[X>>3]=-1.0;p[X+8>>3]=0.0;p[V>>3]=1.0;p[V+8>>3]=0.0;uk(U,X,V);p[W>>3]=1.0;p[W+8>>3]=0.0;uk(Z,U,W);k[V>>2]=m;k[V+4>>2]=o;k[W>>2]=Y;k[W+4>>2]=1;k[U>>2]=k[Z>>2];k[U+4>>2]=k[Z+4>>2];k[U+8>>2]=k[Z+8>>2];k[U+12>>2]=k[Z+12>>2];Bn(s,w,V,W,j,1,U);Z=0;u=_;return Z|0}function Zm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=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;if((b|0)<=-1)Oa(16605,15693,425,29764);M=h+12|0;if((k[M>>2]|0)<=(b|0))Oa(16605,15693,425,29764);K=h+8|0;L=k[(k[K>>2]|0)+(b<<2)>>2]|0;N=h+76|0;i=k[N>>2]|0;if((i|0)<=(b|0))Oa(16605,15693,425,29764);Q=h+72|0;j=k[(k[Q>>2]|0)+(b<<2)>>2]|0;a:do if((c|0)>0){t=d+4|0;u=e+4|0;v=h+4|0;w=h+44|0;x=h+40|0;y=h+80|0;z=h+56|0;A=h+88|0;B=h+64|0;C=h+28|0;D=h+24|0;E=f+4|0;F=h+68|0;G=h+64|0;H=g+4|0;I=h+60|0;J=h+56|0;r=0;s=c;b:while(1){if((s|0)<1?1:(k[t>>2]|0)<(s|0)){j=9;break}s=s+-1|0;l=k[(k[d>>2]|0)+(s<<2)>>2]|0;if(!((l|0)>-1?(k[M>>2]|0)>(l|0):0)){j=11;break}i=k[(k[K>>2]|0)+(l<<2)>>2]|0;if((L|0)!=(i|0)){if((k[u>>2]|0)<=(l|0)){j=14;break}m=k[(k[e>>2]|0)+(l<<2)>>2]|0;if((m|0)!=-1){if(!((i|0)>-1?(k[v>>2]|0)>(i|0):0)){j=17;break}i=k[(k[h>>2]|0)+(i<<2)>>2]|0;if(!((i|0)>-1?(k[w>>2]|0)>(i|0):0)){j=19;break}p=m-i+(k[(k[x>>2]|0)+(i<<2)>>2]|0)|0;q=l-m|0;l=j+1+q|0;while(1){if((l|0)<=(k[y>>2]|0))break;i=cn(a,z,y,j,0,A)|0;if(i|0){j=44;break b}i=dn(a,B,y,j,1,A)|0;if(i|0){j=44;break b}}if((q|0)>=0){n=(p|0)>-1;o=(j|0)>-1;m=0;l=p;i=j;while(1){if(!(n&(k[C>>2]|0)>(l|0))){j=27;break b}j=k[(k[D>>2]|0)+(l<<2)>>2]|0;if(!((j|0)>-1?(k[E>>2]|0)>(j|0):0)){j=29;break b}if(!(o&(k[F>>2]|0)>(i|0))){j=31;break b}k[(k[G>>2]|0)+(i<<2)>>2]=k[(k[f>>2]|0)+(j<<2)>>2];if((k[H>>2]|0)<=(j|0)){j=33;break b}if((k[I>>2]|0)<=(i|0)){j=35;break b}R=(k[g>>2]|0)+(j<<4)|0;p=(k[J>>2]|0)+(i<<4)|0;k[p>>2]=k[R>>2];k[p+4>>2]=k[R+4>>2];k[p+8>>2]=k[R+8>>2];k[p+12>>2]=k[R+12>>2];if((k[H>>2]|0)<=(j|0)){j=37;break b}R=(k[g>>2]|0)+(j<<4)|0;i=i+1|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;if((m|0)<(q|0)){m=m+1|0;l=l+1|0}else break}}else i=j}else i=j}else i=j;r=r+1|0;if((r|0)>=(c|0)){j=40;break}else j=i}switch(j|0){case 9:{Oa(16605,15693,425,29764);break}case 11:{Oa(16605,15693,425,29764);break}case 14:{Oa(16605,15693,425,29764);break}case 17:{Oa(16605,15693,425,29764);break}case 19:{Oa(16605,15693,425,29764);break}case 27:{Oa(16605,15693,425,29764);break}case 29:{Oa(16605,15693,425,29764);break}case 31:{Oa(16605,15693,425,29764);break}case 33:{Oa(16605,15693,425,29764);break}case 35:{Oa(16605,15693,425,29764);break}case 37:{Oa(16605,15693,425,29764);break}case 40:{O=i;P=k[N>>2]|0;break a}case 44:return i|0}}else{O=j;P=i}while(0);i=b+1|0;if(!((b|0)>-2&(P|0)>(i|0)))Oa(16605,15693,425,29764);k[(k[Q>>2]|0)+(i<<2)>>2]=O;R=0;return R|0}function _m(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;var h=0,i=0,j=0.0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0;y=u;u=u+48|0;v=y+32|0;w=y+16|0;x=y;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[g+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);a=k[(k[g+8>>2]|0)+(b<<2)>>2]|0;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[g+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);q=k[(k[g>>2]|0)+(a<<2)>>2]|0;s=b-q|0;if((q|0)<=-1)Oa(16605,15693,425,29764);a=k[g+44>>2]|0;if((a|0)<=(q|0))Oa(16605,15693,425,29764);h=k[g+40>>2]|0;m=k[h+(q<<2)>>2]|0;i=q+1|0;if((a|0)<=(i|0))Oa(16605,15693,425,29764);t=(k[h+(i<<2)>>2]|0)-m|0;h=k[g+36>>2]|0;if((h|0)<=(i|0))Oa(16605,15693,425,29764);l=k[g+32>>2]|0;if((h|0)<=(q|0))Oa(16605,15693,425,29764);o=k[l+(q<<2)>>2]|0;n=(k[l+(i<<2)>>2]|0)-o|0;a=k[g+16>>2]|0;o=a+(o<<4)|0;if((h|0)<=(b|0))Oa(16605,15693,425,29764);r=a+(k[l+(b<<2)>>2]<<4)|0;m=(k[g+24>>2]|0)+(m<<2)|0;if((k[e+4>>2]|0)<=(b|0))Oa(16605,15693,425,29764);a=k[(k[e>>2]|0)+(b<<2)>>2]|0;do if((s|0)<(t|0)){j=-1.0;h=s;l=-1;i=s;do{e=r+(h<<4)|0;z=+Qo(+p[e>>3],+p[e+8>>3]);e=z>j;i=e?h:i;j=e?z:j;l=(k[m+(h<<2)>>2]|0)==(a|0)?h:l;h=h+1|0}while((h|0)!=(t|0));if(j<=0.0){if(j<0.0)break;a=k[m+(i<<2)>>2]|0;break}if((l|0)>-1){z=j*+p[c>>3];c=r+(l<<4)|0;j=+Qo(+p[c>>3],+p[c+8>>3]);i=j==0.0|!(j>=z)?i:l}h=m+(i<<2)|0;a=k[h>>2]|0;k[f>>2]=a;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[d+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[d>>2]|0)+(a<<2)>>2]=b;if((i|0)!=(s|0)?(f=m+(s<<2)|0,d=k[h>>2]|0,k[h>>2]=k[f>>2],k[f>>2]=d,(s|0)>=0):0){h=b+1-q|0;a=0;do{f=aa(a,n)|0;d=o+(f+i<<4)|0;f=o+(f+s<<4)|0;k[v>>2]=k[d>>2];k[v+4>>2]=k[d+4>>2];k[v+8>>2]=k[d+8>>2];k[v+12>>2]=k[d+12>>2];k[d>>2]=k[f>>2];k[d+4>>2]=k[f+4>>2];k[d+8>>2]=k[f+8>>2];k[d+12>>2]=k[f+12>>2];k[f>>2]=k[v>>2];k[f+4>>2]=k[v+4>>2];k[f+8>>2]=k[v+8>>2];k[f+12>>2]=k[v+12>>2];a=a+1|0}while((a|0)!=(h|0))}p[v>>3]=1.0;p[v+8>>3]=0.0;tk(x,v,r+(s<<4)|0);a=s+1|0;if((a|0)<(t|0)){h=x+8|0;i=w+8|0;do{f=r+(a<<4)|0;z=+p[h>>3];p[w>>3]=+p[x>>3];p[i>>3]=z;uk(v,f,w);k[f>>2]=k[v>>2];k[f+4>>2]=k[v+4>>2];k[f+8>>2]=k[v+8>>2];k[f+12>>2]=k[v+12>>2];a=a+1|0}while((a|0)!=(t|0))}x=0;u=y;return x|0}while(0);k[f>>2]=a;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[d+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[d>>2]|0)+(a<<2)>>2]=b;x=b+1|0;u=y;return x|0}function $m(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+16|0;L=M;if((b|0)<=-1)Oa(16605,15693,425,29764);J=i+12|0;if((k[J>>2]|0)<=(b|0))Oa(16605,15693,425,29764);K=i+8|0;t=k[(k[K>>2]|0)+(b<<2)>>2]|0;if((e|0)<=0){u=M;return}v=f+4|0;w=g+4|0;x=h+4|0;y=i+44|0;z=i+40|0;A=i+28|0;B=i+24|0;C=i+4|0;D=c+4|0;E=i+36|0;F=i+32|0;G=i+20|0;H=i+16|0;s=0;a:while(1){if((k[v>>2]|0)<=(s|0)){a=7;break}I=k[(k[f>>2]|0)+(s<<2)>>2]|0;j=I+1|0;if((I|0)<=-1){a=10;break}if((k[w>>2]|0)<=(I|0)){a=10;break}b:do if((k[(k[g>>2]|0)+(I<<2)>>2]|0)!=-1){a=k[J>>2]|0;if((a|0)<=(I|0)){a=13;break a}b=k[K>>2]|0;o=k[b+(I<<2)>>2]|0;if((a|0)<=(j|0)){a=15;break a}if(!((o|0)==(t|0)?1:(o|0)==(k[b+(j<<2)>>2]|0))){if((k[x>>2]|0)<=(I|0)){a=18;break a}a=k[y>>2]|0;if((a|0)<=(j|0)){a=20;break a}b=k[z>>2]|0;m=k[b+(j<<2)>>2]|0;if((k[(k[h>>2]|0)+(I<<2)>>2]|0)>=(m|0)){if((a|0)<=(I|0)){a=23;break a}a=k[b+(I<<2)>>2]|0;b=m+-1|0;if((a|0)<(m|0)){n=k[A>>2]|0;p=k[B>>2]|0;l=(a|0)>-1;j=a;while(1){if(!(l&(n|0)>(j|0))){a=28;break a}if((k[p+(j<<2)>>2]|0)==(d|0))break;j=j+1|0;if((j|0)>=(m|0))break b}if(!((o|0)>-1?(k[C>>2]|0)>(o|0):0)){a=31;break a}c:do if((I|0)==(k[(k[i>>2]|0)+(o<<2)>>2]|0)){m=n;l=p;while(1){n=k[D>>2]|0;q=k[c>>2]|0;j=(b|0)<(m|0);while(1){if(!((b|0)>-1&j)){a=51;break a}o=l+(b<<2)|0;p=k[o>>2]|0;if(!((p|0)>-1&(n|0)>(p|0))){a=53;break a}if((k[q+(p<<2)>>2]|0)!=-1)break;if((a|0)<(b|0))b=b+-1|0;else break c}if((m|0)<=(a|0)){a=57;break a}j=l+(a<<2)|0;l=k[j>>2]|0;if(!((l|0)>-1&(n|0)>(l|0))){a=59;break a}r=a+1|0;if((k[q+(l<<2)>>2]|0)==-1){k[j>>2]=p;k[o>>2]=l;if((k[E>>2]|0)<=(I|0)){a=62;break a}j=k[(k[F>>2]|0)+(I<<2)>>2]|0;if((k[y>>2]|0)<=(I|0)){a=63;break a}q=k[(k[z>>2]|0)+(I<<2)>>2]|0;n=a-q+j|0;j=b-q+j|0;if((n|0)<=-1){a=64;break a}l=k[G>>2]|0;if((l|0)<=(n|0)){a=64;break a}m=k[H>>2]|0;if(!((j|0)>-1&(l|0)>(j|0))){a=65;break a}p=m+(n<<4)|0;q=m+(j<<4)|0;k[L>>2]=k[p>>2];k[L+4>>2]=k[p+4>>2];k[L+8>>2]=k[p+8>>2];k[L+12>>2]=k[p+12>>2];k[p>>2]=k[q>>2];k[p+4>>2]=k[q+4>>2];k[p+8>>2]=k[q+8>>2];k[p+12>>2]=k[q+12>>2];k[q>>2]=k[L>>2];k[q+4>>2]=k[L+4>>2];k[q+8>>2]=k[L+8>>2];k[q+12>>2]=k[L+12>>2];b=b+-1|0}if((a|0)>=(b|0)){a=r;break c}a=r;m=k[A>>2]|0;l=k[B>>2]|0}}else{m=n;l=p;while(1){n=k[D>>2]|0;q=k[c>>2]|0;j=(b|0)<(m|0);while(1){if(!((b|0)>-1&j)){a=51;break a}o=l+(b<<2)|0;p=k[o>>2]|0;if(!((p|0)>-1&(n|0)>(p|0))){a=53;break a}if((k[q+(p<<2)>>2]|0)!=-1)break;if((a|0)<(b|0))b=b+-1|0;else break c}if((m|0)<=(a|0)){a=57;break a}j=l+(a<<2)|0;l=k[j>>2]|0;if(!((l|0)>-1&(n|0)>(l|0))){a=59;break a}m=a+1|0;if((k[q+(l<<2)>>2]|0)==-1){k[j>>2]=p;k[o>>2]=l;b=b+-1|0}if((a|0)>=(b|0)){a=m;break c}a=m;m=k[A>>2]|0;l=k[B>>2]|0}}while(0);if((k[x>>2]|0)<=(I|0)){a=69;break a}k[(k[h>>2]|0)+(I<<2)>>2]=a}}}}while(0);s=s+1|0;if((s|0)>=(e|0)){a=72;break}}switch(a|0){case 7:{Oa(16605,15693,180,29764);break}case 10:{Oa(16605,15693,425,29764);break}case 13:{Oa(16605,15693,425,29764);break}case 15:{Oa(16605,15693,425,29764);break}case 18:{Oa(16605,15693,425,29764);break}case 20:{Oa(16605,15693,425,29764);break}case 23:{Oa(16605,15693,425,29764);break}case 28:{Oa(16605,15693,425,29764);break}case 31:{Oa(16605,15693,425,29764);break}case 51:{Oa(16605,15693,425,29764);break}case 53:{Oa(16605,15693,180,29764);break}case 57:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,180,29764);break}case 62:{Oa(16605,15693,425,29764);break}case 63:{Oa(16605,15693,425,29764);break}case 64:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 69:{Oa(16605,15693,425,29764);break}case 72:{u=M;return}}}function an(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;k[c>>2]=0;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[e+76>>2]|0)<=(b|0))Oa(16605,15693,425,29764);k[d>>2]=k[(k[e+72>>2]|0)+(b<<2)>>2];if((k[e+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);q=k[(k[e+8>>2]|0)+(b<<2)>>2]|0;if((b|0)<1|(q|0)<0)return;n=e+4|0;o=k[e>>2]|0;p=e+44|0;m=k[e+40>>2]|0;l=0;f=k[n>>2]|0;a:while(1){if((f|0)<=(l|0)){a=10;break}b=k[o+(l<<2)>>2]|0;e=b+1|0;if((b|0)<=-2){a=13;break}a=k[p>>2]|0;if((a|0)<=(e|0)){a=13;break}if(!((b|0)>-1&(a|0)>(b|0))){a=15;break}h=l;l=l+1|0;if((f|0)<=(l|0)){a=20;break}i=o+(l<<2)|0;j=1-b|0;g=b;b=(k[m+(e<<2)>>2]|0)-(k[m+(b<<2)>>2]|0)|0;a=f;while(1){if((g|0)>=(k[i>>2]|0))break;k[c>>2]=(k[c>>2]|0)+b;k[d>>2]=j+g+(k[d>>2]|0);a=k[n>>2]|0;if((a|0)>(l|0)){g=g+1|0;b=b+-1|0}else{a=20;break a}}if((h|0)>=(q|0)){a=21;break}else f=a}if((a|0)==10)Oa(16605,15693,425,29764);else if((a|0)==13)Oa(16605,15693,425,29764);else if((a|0)==15)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==21)return}function bn(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,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;if((b|0)<=-1)Oa(16605,15693,425,29764);if((k[d+12>>2]|0)<=(b|0))Oa(16605,15693,425,29764);p=k[(k[d+8>>2]|0)+(b<<2)>>2]|0;a:do if((p|0)>=0){q=d+4|0;r=d+44|0;s=d+40|0;t=d+28|0;u=d+24|0;v=c+4|0;g=0;o=0;a=k[q>>2]|0;b:while(1){if((a|0)<=(o|0)){a=9;break}l=k[d>>2]|0;a=k[l+(o<<2)>>2]|0;if(!((a|0)>-1?(k[r>>2]|0)>(a|0):0)){a=11;break}e=k[s>>2]|0;n=e+(a<<2)|0;f=k[n>>2]|0;k[n>>2]=g;n=a+1|0;if((k[r>>2]|0)<=(n|0)){a=20;break}h=e+(n<<2)|0;i=(f|0)>-1;j=(g|0)>-1;m=g;while(1){if((f|0)>=(k[h>>2]|0))break;if(!i){a=26;break b}a=k[t>>2]|0;if((a|0)<=(f|0)){a=26;break b}e=k[u>>2]|0;g=k[e+(f<<2)>>2]|0;if(!((g|0)>-1?(k[v>>2]|0)>(g|0):0)){a=27;break b}if(!(j&(a|0)>(m|0))){a=28;break b}k[e+(m<<2)>>2]=k[(k[c>>2]|0)+(g<<2)>>2];if((k[r>>2]|0)>(n|0)){f=f+1|0;m=m+1|0}else{a=20;break b}}h=o;o=o+1|0;a=k[q>>2]|0;if((a|0)<=(o|0)){a=29;break}f=l+(o<<2)|0;g=k[s>>2]|0;e=n;while(1){if((e|0)>=(k[f>>2]|0))break;if((k[r>>2]|0)<=(e|0)){a=30;break b}k[g+(e<<2)>>2]=m;a=k[q>>2]|0;if((a|0)>(o|0))e=e+1|0;else{a=29;break b}}if((h|0)>=(p|0)){w=m;x=r;break a}else g=m}if((a|0)==9)Oa(16605,15693,425,29764);else if((a|0)==11)Oa(16605,15693,425,29764);else if((a|0)==20)Oa(16605,15693,425,29764);else if((a|0)==26)Oa(16605,15693,425,29764);else if((a|0)==27)Oa(16605,15693,180,29764);else if((a|0)==28)Oa(16605,15693,425,29764);else if((a|0)==29)Oa(16605,15693,425,29764);else if((a|0)==30)Oa(16605,15693,425,29764)}else{w=0;x=d+44|0}while(0);if((k[x>>2]|0)>(b|0)){k[(k[d+40>>2]|0)+(b<<2)>>2]=w;return}else Oa(16605,15693,425,29764)}function cn(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 g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;m=u;u=u+16|0;l=m;a=k[c>>2]|0;if(!((e|0)!=0|(k[f>>2]|0)==0)){j=a+1|0;a=~~(+(a|0)*1.5);a=(j|0)<(a|0)?a:j}k[l>>2]=0;j=l+4|0;k[j>>2]=0;g=(d|0)>0;if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);yk(l,d,1);if((k[j>>2]|0)!=(d|0))Oa(12160,12207,721,12285);i=k[l>>2]|0;e=0;do{n=i+(e<<4)|0;o=h+(e<<4)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];k[n+12>>2]=k[o+12>>2];e=e+1|0}while((e|0)!=(d|0));pk(b,a);if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);g=k[l>>2]|0;if((k[j>>2]|0)==(d|0)){e=0;do{o=h+(e<<4)|0;n=g+(e<<4)|0;k[o>>2]=k[n>>2];k[o+4>>2]=k[n+4>>2];k[o+8>>2]=k[n+8>>2];k[o+12>>2]=k[n+12>>2];e=e+1|0}while((e|0)!=(d|0))}else Oa(14445,14320,257,12780)}}else pk(b,a);k[c>>2]=a;a=k[f>>2]|0;if(a|0)k[f>>2]=a+1;a=k[l>>2]|0;if(!a){u=m;return 0}Pq(k[a+-4>>2]|0);u=m;return 0}function dn(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 g=0,h=0,i=0,j=0,l=0,m=0;m=u;u=u+16|0;l=m;a=k[c>>2]|0;if(!((e|0)!=0|(k[f>>2]|0)==0)){j=a+1|0;a=~~(+(a|0)*1.5);a=(j|0)<(a|0)?a:j}k[l>>2]=0;j=l+4|0;k[j>>2]=0;g=(d|0)>0;if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);Ng(l,d,1);if((k[j>>2]|0)!=(d|0))Oa(12160,12207,721,12285);i=k[l>>2]|0;e=0;do{k[i+(e<<2)>>2]=k[h+(e<<2)>>2];e=e+1|0}while((e|0)!=(d|0));Ef(b,a);if(g){h=k[b>>2]|0;if((k[b+4>>2]|0)<(d|0))Oa(14177,13744,147,13812);g=k[l>>2]|0;if((k[j>>2]|0)==(d|0)){e=0;do{k[h+(e<<2)>>2]=k[g+(e<<2)>>2];e=e+1|0}while((e|0)!=(d|0))}else Oa(14445,14320,257,12780)}}else Ef(b,a);k[c>>2]=a;a=k[f>>2]|0;if(a|0)k[f>>2]=a+1;a=k[l>>2]|0;if(!a){u=m;return 0}Pq(k[a+-4>>2]|0);u=m;return 0}function en(a,b,c,d,e,f,g,h,i,j,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;if((o|0)<=-1)Oa(16605,15693,425,29764);M=i+4|0;if((k[M>>2]|0)<=(o|0))Oa(16605,15693,425,29764);K=k[i>>2]|0;k[K+(o<<2)>>2]=b;L=c+4|0;if((k[L>>2]|0)<=(o|0))Oa(16605,15693,425,29764);J=k[c>>2]|0;c=k[J+(o<<2)>>2]|0;if((c|0)==-1){a=k[n>>2]|0;k[n>>2]=a+1;if((a|0)<=-1)Oa(16605,15693,425,29764);if((k[e+4>>2]|0)<=(a|0))Oa(16605,15693,425,29764);k[(k[e>>2]|0)+(a<<2)>>2]=o;return}if((c|0)<=-1)Oa(16605,15693,425,29764);F=m+12|0;if((k[F>>2]|0)<=(c|0))Oa(16605,15693,425,29764);G=k[m+8>>2]|0;I=k[G+(c<<2)>>2]|0;a=I+1|0;if((I|0)<=-2)Oa(16605,15693,425,29764);H=m+4|0;if((k[H>>2]|0)<=(a|0))Oa(16605,15693,425,29764);I=k[m>>2]|0;o=k[I+(a<<2)>>2]|0;q=o+-1|0;if((o|0)<=0)Oa(16605,15693,425,29764);E=g+4|0;if((k[E>>2]|0)<(o|0))Oa(16605,15693,425,29764);D=k[g>>2]|0;i=D+(q<<2)|0;a=k[i>>2]|0;if((a|0)!=-1){if((a|0)<=(c|0))return;k[i>>2]=c;return}C=j+4|0;if((k[C>>2]|0)<(o|0))Oa(16605,15693,425,29764);B=k[j>>2]|0;k[B+(q<<2)>>2]=-1;if((k[E>>2]|0)<(o|0))Oa(16605,15693,425,29764);k[i>>2]=c;z=m+44|0;if((k[z>>2]|0)<(o|0))Oa(16605,15693,425,29764);A=h+4|0;if((k[A>>2]|0)<(o|0))Oa(16605,15693,425,29764);u=k[m+40>>2]|0;v=p+4|0;w=f+4|0;x=l+4|0;y=m+28|0;s=m+24|0;t=e+4|0;r=k[h>>2]|0;i=q;a=u+(q<<2)|0;a:while(1){a=k[a>>2]|0;c=k[r+(i<<2)>>2]|0;b:do if((a|0)<(c|0))while(1){h=(a|0)>-1;c:while(1){if(!(h&(k[y>>2]|0)>(a|0))){a=36;break a}g=k[(k[s>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if((g|0)<=-1){a=39;break a}if((k[M>>2]|0)<=(g|0)){a=39;break a}o=K+(g<<2)|0;do if((k[o>>2]|0)!=(b|0)){k[o>>2]=b;if((k[L>>2]|0)<=(g|0)){a=42;break a}m=k[J+(g<<2)>>2]|0;if((m|0)==-1){o=k[n>>2]|0;k[n>>2]=o+1;if(!((o|0)>-1?(k[t>>2]|0)>(o|0):0)){a=45;break a}k[(k[e>>2]|0)+(o<<2)>>2]=g;break}if(!((m|0)>-1?(k[F>>2]|0)>(m|0):0)){a=49;break a}q=k[G+(m<<2)>>2]|0;o=q+1|0;if(!((q|0)>-2?(k[H>>2]|0)>(o|0):0)){a=51;break a}o=k[I+(o<<2)>>2]|0;q=o+-1|0;if((o|0)<=0){a=54;break a}if((k[E>>2]|0)<(o|0)){a=54;break a}g=D+(q<<2)|0;j=k[g>>2]|0;if((j|0)==-1)break c;if((j|0)<=(m|0))break;k[g>>2]=m}while(0);if((a|0)>=(c|0))break b}if(!((i|0)>-1?(k[x>>2]|0)>(i|0):0)){a=59;break a}k[(k[l>>2]|0)+(i<<2)>>2]=a;if((k[C>>2]|0)<(o|0)){a=61;break a}k[B+(q<<2)>>2]=i;if((k[E>>2]|0)<(o|0)){a=63;break a}k[D+(q<<2)>>2]=m;if((k[z>>2]|0)<(o|0)){a=65;break a}if((k[A>>2]|0)<(o|0)){a=67;break a}a=k[u+(q<<2)>>2]|0;c=k[r+(q<<2)>>2]|0;if((a|0)>=(c|0)){i=q;break}else i=q}while(0);a=(k[v>>2]|0)+(i<<2)|0;if((k[a>>2]|0)<(k[p>>2]|0)){k[a>>2]=b;a=k[d>>2]|0;if(!((a|0)>-1?(k[w>>2]|0)>(a|0):0)){a=71;break}k[(k[f>>2]|0)+(a<<2)>>2]=i;k[d>>2]=(k[d>>2]|0)+1}if(!((i|0)>-1?(k[C>>2]|0)>(i|0):0)){a=74;break}a=k[B+(i<<2)>>2]|0;if((a|0)==-1){a=78;break}if(!((a|0)>-1?(k[x>>2]|0)>(a|0):0)){a=77;break}if((k[A>>2]|0)>(a|0)){i=a;a=(k[l>>2]|0)+(a<<2)|0}else{a=32;break}}switch(a|0){case 32:{Oa(16605,15693,425,29764);break}case 36:{Oa(16605,15693,425,29764);break}case 39:{Oa(16605,15693,425,29764);break}case 42:{Oa(16605,15693,425,29764);break}case 45:{Oa(16605,15693,425,29764);break}case 49:{Oa(16605,15693,425,29764);break}case 51:{Oa(16605,15693,425,29764);break}case 54:{Oa(16605,15693,425,29764);break}case 59:{Oa(16605,15693,425,29764);break}case 61:{Oa(16605,15693,425,29764);break}case 63:{Oa(16605,15693,425,29764);break}case 65:{Oa(16605,15693,425,29764);break}case 67:{Oa(16605,15693,425,29764);break}case 71:{Oa(16605,15693,425,29764);break}case 74:{Oa(16605,15693,425,29764);break}case 77:{Oa(16605,15693,425,29764);break}case 78:return}} -function Rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=sf(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Sj(a){a=a|0;return 320}function Tj(a){a=a|0;if(!a)return;EA(a);return}function Uj(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=CA(16)|0;d=+p[b>>3];p[c>>3]=+p[a>>3];p[c+8>>3]=d;return c|0}function Vj(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+8|0;e=d;p[f>>3]=b;p[e>>3]=c;a=Yc[a&63](f,e)|0;u=d;return a|0}function Wj(a,b){a=a|0;b=b|0;return +(+Vc[a&7](b))}function Xj(a){a=a|0;return 360}function Yj(a){a=a|0;var b=0;if(!a)return;b=k[a>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);EA(a);return}function Zj(a,b){a=a|0;b=b|0;var c=0;c=CA(12)|0;$j(c,k[a>>2]|0,k[b>>2]|0);return c|0}function _j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function $j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+48|0;h=i+16|0;d=i;k[a>>2]=0;e=a+4|0;k[e>>2]=0;f=a+8|0;k[f>>2]=0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;if((c|b|0)<=-1)Oa(11919,12068,74,12145);k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];do if(b|c){ak(a,b,c);if((k[e>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[f>>2]|0)==(c|0)){g=k[a>>2]|0;break}else Oa(12160,12207,721,12285)}else g=0;while(0);a=aa(c,b)|0;if((a|0)>0)d=0;else{u=i;return}do{f=g+(d<<4)|0;k[f>>2]=k[h>>2];k[f+4>>2]=k[h+4>>2];k[f+8>>2]=k[h+8>>2];k[f+12>>2]=k[h+12>>2];d=d+1|0}while((d|0)!=(a|0));u=i;return}function ak(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((c|b|0)<=-1)Oa(12303,12702,285,12780);if(!((b|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(b|0):0){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}d=aa(c,b)|0;g=a+4|0;h=a+8|0;if((aa(k[h>>2]|0,k[g>>2]|0)|0)==(d|0)){k[g>>2]=b;k[h>>2]=c;return}e=k[a>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);do if(d){if(d>>>0>268435455){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}f=d<<4;e=Oq(f+16|0)|0;d=e+16&-16;if(!e)d=0;else k[d+-4>>2]=e;if((f|0)!=0&(d|0)==0){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}else break}else d=0;while(0);k[a>>2]=d;k[g>>2]=b;k[h>>2]=c;return}function bk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=CA(12)|0;f=k[a+4>>2]|0;g=k[a+8>>2]|0;h=aa(g,f)|0;if(!h){k[d>>2]=0;k[d+4>>2]=f;k[d+8>>2]=g;return d|0}if(h>>>0>268435455){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}e=h<<4;c=Oq(e+16|0)|0;b=c+16&-16;if(!c)b=0;else k[b+-4>>2]=c;if((e|0)!=0&(b|0)==0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[d>>2]=b;k[d+4>>2]=f;k[d+8>>2]=g;nF(b|0,k[a>>2]|0,h<<4|0)|0;return d|0}function ck(a,b){a=a|0;b=b|0;return Pc[a&127](b)|0}function dk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b+4|0;g=k[f>>2]|0;h=b+8|0;i=k[h>>2]|0;c=aa(i,g)|0;if(c){if(c>>>0>268435455){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}e=c<<4;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}else d=c}else d=0;k[a>>2]=d;k[a+4>>2]=g;k[a+8>>2]=i;c=aa(k[h>>2]|0,k[f>>2]|0)|0;if(!c)return;nF(d|0,k[b>>2]|0,c<<4|0)|0;return}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}ak(a,c,d);f=k[b>>2]|0;b=k[e>>2]|0;if(!((k[g>>2]|0)==(f|0)?(k[h>>2]|0)==(b|0):0)){ak(a,f,b);if((k[g>>2]|0)!=(f|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(b|0))Oa(12160,12207,721,12285)}a=k[a>>2]|0;if((b|0)>0){e=0;c=f}else return;do{if((c|0)>0){d=aa(e,f)|0;b=0;do{c=b+d|0;p[a+(c<<4)>>3]=(b|0)==(e|0)?1.0:0.0;p[a+(c<<4)+8>>3]=0.0;b=b+1|0;c=k[g>>2]|0}while((b|0)<(c|0));b=k[h>>2]|0}e=e+1|0}while((e|0)<(b|0));return}function fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;cd[a&63](e,b,c);a=gk(e)|0;b=k[e>>2]|0;if(!b){u=d;return a|0}Pq(k[b+-4>>2]|0);u=d;return a|0}function gk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=CA(12)|0;f=k[a+4>>2]|0;g=k[a+8>>2]|0;h=aa(g,f)|0;if(!h){k[d>>2]=0;k[d+4>>2]=f;k[d+8>>2]=g;return d|0}if(h>>>0>268435455){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}e=h<<4;c=Oq(e+16|0)|0;b=c+16&-16;if(!c)b=0;else k[b+-4>>2]=c;if((e|0)!=0&(b|0)==0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[d>>2]=b;k[d+4>>2]=f;k[d+8>>2]=g;nF(b|0,k[a>>2]|0,h<<4|0)|0;return d|0}function hk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+32|0;h=i;k[a>>2]=0;f=a+4|0;k[f>>2]=0;g=a+8|0;k[g>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}ak(a,c,d);c=b+8|0;k[h>>2]=k[c>>2];k[h+4>>2]=k[c+4>>2];k[h+8>>2]=k[c+8>>2];k[h+12>>2]=k[c+12>>2];c=k[b>>2]|0;b=k[e>>2]|0;if(!((k[f>>2]|0)==(c|0)?(k[g>>2]|0)==(b|0):0)){ak(a,c,b);if((k[f>>2]|0)!=(c|0))Oa(12160,12207,721,12285);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(b,c)|0;if((c|0)>0)b=0;else{u=i;return}do{g=d+(b<<4)|0;k[g>>2]=k[h>>2];k[g+4>>2]=k[h+4>>2];k[g+8>>2]=k[h+8>>2];k[g+12>>2]=k[h+12>>2];b=b+1|0}while((b|0)!=(c|0));u=i;return}function ik(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;gd[a&15](f,b,c,d);a=gk(f)|0;b=k[f>>2]|0;if(!b){u=e;return a|0}Pq(k[b+-4>>2]|0);u=e;return a|0}function jk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0;k[a>>2]=0;f=a+4|0;k[f>>2]=0;g=a+8|0;k[g>>2]=0;c=k[b>>2]|0;e=b+4|0;d=k[e>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}ak(a,c,d);c=k[b>>2]|0;b=k[e>>2]|0;if(!((k[f>>2]|0)==(c|0)?(k[g>>2]|0)==(b|0):0)){ak(a,c,b);if((k[f>>2]|0)!=(c|0))Oa(12160,12207,721,12285);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(b,c)|0;if((c|0)>0)b=0;else return;do{g=Gq()|0;h=+(Gq()|0)*2.0/2147483647.0+-1.0;p[d+(b<<4)>>3]=+(g|0)*2.0/2147483647.0+-1.0;p[d+(b<<4)+8>>3]=h;b=b+1|0}while((b|0)!=(c|0));return}function kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=gk(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function lk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0;k[a>>2]=0;f=a+4|0;k[f>>2]=0;g=a+8|0;k[g>>2]=0;d=k[b>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){g=Kb(4)|0;cF(g);Cc(g|0,2032,79)}ak(a,c,d);c=k[b>>2]|0;e=k[c>>2]|0;b=k[c+4>>2]|0;c=k[c+8>>2]|0;if(!((k[f>>2]|0)==(b|0)?(k[g>>2]|0)==(c|0):0)){ak(a,b,c);if((k[f>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[g>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else return;do{h=-+p[e+(b<<4)+8>>3];p[d+(b<<4)>>3]=+p[e+(b<<4)>>3];p[d+(b<<4)+8>>3]=h;b=b+1|0}while((b|0)!=(c|0));return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function nk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(e&1)d=k[(k[a>>2]|0)+d>>2]|0;return +(+$c[d&7](a,c))}function ok(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;j=b+4|0;e=k[j>>2]|0;l=b+8|0;g=k[l>>2]|0;k[a>>2]=0;m=a+4|0;k[m>>2]=0;n=a+8|0;k[n>>2]=0;ak(a,e,g);g=a+12|0;e=k[j>>2]|0;f=k[l>>2]|0;k[g>>2]=0;k[a+16>>2]=0;pk(g,(f|0)<(e|0)?f:e);e=a+20|0;f=k[l>>2]|0;k[e>>2]=0;k[a+24>>2]=0;Ef(e,f);f=a+28|0;e=k[l>>2]|0;k[f>>2]=0;k[a+32>>2]=0;Ff(f,e);e=a+36|0;f=k[l>>2]|0;k[e>>2]=0;g=a+40|0;k[g>>2]=0;if((f|0)<=-1)Oa(13359,12702,312,12780);do if(f|0){if(f>>>0>268435455){a=Kb(4)|0;cF(a);Cc(a|0,2032,79)}h=f<<4;d=Oq(h+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((h|0)!=0&(c|0)==0){a=Kb(4)|0;cF(a);Cc(a|0,2032,79)}else{k[e>>2]=c;break}}while(0);k[g>>2]=f;d=a+44|0;k[d>>2]=0;k[a+48>>2]=0;Gf(d,f);d=a+52|0;e=k[l>>2]|0;k[d>>2]=0;k[a+56>>2]=0;Gf(d,e);i[a+60>>0]=0;i[a+61>>0]=0;e=k[b>>2]|0;d=k[j>>2]|0;c=k[l>>2]|0;if(!((k[m>>2]|0)==(d|0)?(k[n>>2]|0)==(c|0):0)){ak(a,d,c);if((k[m>>2]|0)!=(d|0))Oa(12160,12207,721,12285);if((k[n>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}b=k[a>>2]|0;d=aa(c,d)|0;if((d|0)>0)c=0;else{qk(a);return}do{n=b+(c<<4)|0;m=e+(c<<4)|0;k[n>>2]=k[m>>2];k[n+4>>2]=k[m+4>>2];k[n+8>>2]=k[m+8>>2];k[n+12>>2]=k[m+12>>2];c=c+1|0}while((c|0)!=(d|0));qk(a);return}function pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=-1)Oa(13359,12702,312,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>268435455){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}e=b<<4;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){f=Kb(4)|0;cF(f);Cc(f|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function qk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0.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;xa=u;u=u+144|0;ma=xa+64|0;pa=xa+56|0;qa=xa;ra=a+8|0;ua=k[ra>>2]|0;sa=a+4|0;ta=k[sa>>2]|0;wa=(ua|0)<(ta|0)?ua:ta;na=a+12|0;pk(na,wa);oa=a+36|0;if((ua|0)<=-1)Oa(13359,12702,312,12780);e=a+40|0;if((k[e>>2]|0)!=(ua|0)){b=k[oa>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);do if(ua){if(ua>>>0>268435455){xa=Kb(4)|0;cF(xa);Cc(xa|0,2032,79)}d=ua<<4;c=Oq(d+16|0)|0;b=c+16&-16;if(!c)b=0;else k[b+-4>>2]=c;if((d|0)!=0&(b|0)==0){xa=Kb(4)|0;cF(xa);Cc(xa|0,2032,79)}else break}else b=0;while(0);k[oa>>2]=b}k[e>>2]=ua;ka=a+28|0;Ff(ka,k[ra>>2]|0);ia=a+44|0;Gf(ia,ua);ja=a+52|0;Gf(ja,ua);a:do if((ua|0)>0){f=k[a>>2]|0;h=k[sa>>2]|0;j=(h|0)==0;l=(h|0)>0;m=(h|0)==1;if((h|0)<=-1){b=0;while(1){c=aa(h,b)|0;if(f+(c<<4)|0){b=31;break}if((k[ra>>2]|0)<=(b|0)){b=33;break}if(!l){b=35;break}W=+p[f+(c<<4)+8>>3];W=+Q(+(W*W+0.0));p[(k[ja>>2]|0)+(b<<3)>>3]=W;p[(k[ia>>2]|0)+(b<<3)>>3]=W;b=b+1|0;if((b|0)>=(ua|0))break a}if((b|0)==31)Oa(13818,13988,175,14058);else if((b|0)==33)Oa(13577,13744,122,13812);else if((b|0)==35)Oa(13148,13216,413,13284)}e=k[ra>>2]|0;d=0;while(1){b=aa(h,d)|0;c=f+(b<<4)|0;if((e|0)<=(d|0)){b=33;break}if(!j){if(!l){b=35;break}W=+p[c>>3];g=+p[f+(b<<4)+8>>3];g=W*W+g*g;if(!m){b=1;do{o=+p[c+(b<<4)>>3];W=+p[c+(b<<4)+8>>3];g=g+(o*o+W*W);b=b+1|0}while((b|0)<(h|0))}}else g=0.0;W=+Q(+g);p[(k[ja>>2]|0)+(d<<3)>>3]=W;p[(k[ia>>2]|0)+(d<<3)>>3]=W;d=d+1|0;if((d|0)>=(ua|0))break a}if((b|0)==33)Oa(13577,13744,122,13812);else if((b|0)==35)Oa(13148,13216,413,13284)}while(0);ga=a+48|0;c=k[ga>>2]|0;if((c|0)<=0)Oa(13148,13216,413,13284);d=k[ia>>2]|0;g=+p[d>>3];if((c|0)!=1){b=1;do{W=+p[d+(b<<3)>>3];g=g>2]=wa;Y=a+72|0;p[Y>>3]=0.0;ha=(wa|0)>0;b:do if(ha){Z=qa+4|0;F=qa+12|0;G=qa+16|0;C=qa+24|0;w=qa+28|0;y=qa+32|0;A=qa+36|0;_=qa+40|0;$=qa+48|0;ba=ma+4|0;ca=ma+12|0;da=ma+24|0;ea=ma+36|0;H=ma+52|0;I=ma+60|0;J=ma+64|0;K=ma+72|0;L=ma+4|0;M=ma+8|0;N=ma+12|0;O=ma+16|0;R=ma+20|0;S=ma+24|0;T=qa+4|0;D=qa+12|0;E=qa+16|0;B=qa+24|0;v=qa+28|0;x=qa+32|0;z=qa+36|0;U=qa+40|0;V=qa+48|0;b=c-ua|0;c=d+(b<<3)|0;if((ua|0)>-1|(c|0)==0){t=0;la=0;q=b;fa=ua;r=c;s=d}else Oa(13818,13988,175,14058);c:while(1){if((q|fa|0)<0){b=44;break}n=+p[r>>3];if((fa|0)>1){d=1;b=0;g=n;o=n;while(1){n=+p[r+(d<<3)>>3];c=n>o;g=c?n:g;b=c?d:b;d=d+1|0;if((d|0)==(fa|0))break;else o=c?n:o}}else{b=0;g=n}j=b+la|0;if((k[X>>2]|0)==(wa|0)?g*g>2]=la;k[(k[ka>>2]|0)+(la<<2)>>2]=j;if(b){b=k[a>>2]|0;f=k[sa>>2]|0;h=b+((aa(f,la)|0)<<4)|0;c=(f|0)>-1;if(!(c|(h|0)==0)){b=52;break}d=k[ra>>2]|0;if((d|0)<=(la|0)){b=54;break}e=b+((aa(f,j)|0)<<4)|0;if(!(c|(e|0)==0)){b=56;break}if(!((j|0)>-1&(d|0)>(j|0))){b=58;break}if((f|0)>0){b=0;do{r=h+(b<<4)|0;s=e+(b<<4)|0;k[ma>>2]=k[r>>2];k[ma+4>>2]=k[r+4>>2];k[ma+8>>2]=k[r+8>>2];k[ma+12>>2]=k[r+12>>2];k[r>>2]=k[s>>2];k[r+4>>2]=k[s+4>>2];k[r+8>>2]=k[s+8>>2];k[r+12>>2]=k[s+12>>2];k[s>>2]=k[ma>>2];k[s+4>>2]=k[ma+4>>2];k[s+8>>2]=k[ma+8>>2];k[s+12>>2]=k[ma+12>>2];b=b+1|0}while((b|0)!=(f|0));b=k[ia>>2]|0}else b=s;r=b+(la<<3)|0;s=b+(j<<3)|0;o=+p[r>>3];p[r>>3]=+p[s>>3];p[s>>3]=o;s=k[ja>>2]|0;r=s+(la<<3)|0;s=s+(j<<3)|0;o=+p[r>>3];p[r>>3]=+p[s>>3];p[s>>3]=o;t=t+1|0}c=k[sa>>2]|0;b=(k[a>>2]|0)+((aa(c,la)|0)<<4)|0;if(!((c|0)>-1|(b|0)==0)){b=64;break}if((k[ra>>2]|0)<=(la|0)){b=66;break}j=ta-la|0;d=c-j|0;e=b+(d<<4)|0;k[qa>>2]=e;k[Z>>2]=j;if(!((j|0)>-1|(e|0)==0)){b=68;break}k[F>>2]=b;k[G>>2]=c;k[C>>2]=a;k[w>>2]=0;k[y>>2]=la;k[A>>2]=c;k[_>>2]=d;k[$>>2]=c;if((d|j|0)<=-1){b=70;break}b=k[na>>2]|0;s=j+-1|0;k[ma>>2]=e+16;k[ba>>2]=s;if((j|0)<=0){b=72;break}q=qa;r=k[q+4>>2]|0;m=ca;k[m>>2]=k[q>>2];k[m+4>>2]=r;m=F;r=k[m+4>>2]|0;q=da;k[q>>2]=k[m>>2];k[q+4>>2]=r;k[ea>>2]=k[C>>2];k[ea+4>>2]=k[C+4>>2];k[ea+8>>2]=k[C+8>>2];k[ea+12>>2]=k[C+12>>2];k[H>>2]=d;k[I>>2]=c;k[J>>2]=1;k[K>>2]=c;sk(qa,ma,b+(la<<4)|0,pa);q=k[a>>2]|0;r=(aa(k[sa>>2]|0,la)|0)+la|0;p[q+(r<<4)>>3]=+p[pa>>3];p[q+(r<<4)+8>>3]=0.0;g=+P(+(+p[pa>>3]));if(g>+p[Y>>3])p[Y>>3]=g;e=fa+-1|0;f=k[sa>>2]|0;b=f-j|0;h=k[ra>>2]|0;c=h-e|0;d=k[a>>2]|0;fa=d+(b<<4)+((aa(c,f)|0)<<4)|0;k[ma>>2]=fa;k[L>>2]=j;k[M>>2]=e;e=e|j;if(!((e|0)>-1|(fa|0)==0)){b=76;break}k[N>>2]=a;k[O>>2]=b;k[R>>2]=c;k[S>>2]=f;if((e|b|c|0)<=-1){b=78;break}b=d+((aa(f,la)|0)<<4)|0;if(!((f|0)>-1|(b|0)==0)){b=80;break}if((h|0)<=(la|0)){b=82;break}fa=f-s|0;k[qa>>2]=b+(fa<<4);k[T>>2]=s;k[D>>2]=b;k[E>>2]=f;k[B>>2]=a;k[v>>2]=0;k[x>>2]=la;k[z>>2]=f;k[U>>2]=fa;k[V>>2]=f;if((fa|s|0)<=-1){b=84;break}m=la;la=la+1|0;rk(ma,qa,(k[na>>2]|0)+(m<<4)|0,(k[oa>>2]|0)+(la<<4)|0);if((ua|0)>(la|0)){q=k[ia>>2]|0;r=(s|0)==0;h=(j|0)>1;j=(s|0)==1;f=la;do{l=q+(f<<3)|0;g=+p[l>>3];if(g!=0.0){b=k[a>>2]|0;d=k[sa>>2]|0;c=aa(d,f)|0;e=c+m|0;n=+Qo(+p[b+(e<<4)>>3],+p[b+(e<<4)+8>>3])/g;n=(n+1.0)*(1.0-n);n=n<0.0?0.0:n;e=(k[ja>>2]|0)+(f<<3)|0;o=g/+p[e>>3];if(!(o*o*n<=1.4901161193847656e-08))g=g*+Q(+n);else{b=b+(c<<4)|0;if(!((d|0)>-1|(b|0)==0)){b=102;break c}if((k[ra>>2]|0)<=(f|0)){b=103;break c}fa=d-s|0;c=b+(fa<<4)|0;if((fa|s|0)<=-1){b=104;break c}do if(r)g=0.0;else{if(!h){b=105;break c}o=+p[c>>3];g=+p[c+8>>3];g=o*o+g*g;if(j)break;else b=1;do{n=+p[c+(b<<4)>>3];o=+p[c+(b<<4)+8>>3];g=g+(n*n+o*o);b=b+1|0}while((b|0)<(s|0))}while(0);g=+Q(+g);p[e>>3]=g}p[l>>3]=g}f=f+1|0}while((f|0)<(ua|0))}if((la|0)>=(wa|0)){va=t;break b}s=k[ia>>2]|0;fa=ua-la|0;q=(k[ga>>2]|0)-fa|0;r=s+(q<<3)|0;if(!((fa|0)>-1|(r|0)==0)){b=42;break}}switch(b|0){case 42:{Oa(13818,13988,175,14058);break}case 44:{Oa(14177,13744,147,13812);break}case 52:{Oa(13818,13988,175,14058);break}case 54:{Oa(13577,13744,122,13812);break}case 56:{Oa(13818,13988,175,14058);break}case 58:{Oa(13577,13744,122,13812);break}case 64:{Oa(13818,13988,175,14058);break}case 66:{Oa(13577,13744,122,13812);break}case 68:{Oa(13818,13988,175,14058);break}case 70:{Oa(14177,13744,147,13812);break}case 72:{Oa(13818,13988,175,14058);break}case 76:{Oa(13818,13988,175,14058);break}case 78:{Oa(14177,13744,147,13812);break}case 80:{Oa(13818,13988,175,14058);break}case 82:{Oa(13577,13744,122,13812);break}case 84:{Oa(14177,13744,147,13812);break}case 102:{Oa(13818,13988,175,14058);break}case 103:{Oa(13577,13744,122,13812);break}case 104:{Oa(14177,13744,147,13812);break}case 105:{Oa(13148,13216,413,13284);break}}}else va=0;while(0);f=a+20|0;Ef(f,ua);e=a+24|0;c=k[e>>2]|0;if((c|0)>0){d=k[f>>2]|0;b=0;do{k[d+(b<<2)>>2]=b;b=b+1|0}while((b|0)!=(c|0))}if(!ha){va=va<<1;va=va&2;va=va^2;va=va+-1|0;wa=a+84|0;k[wa>>2]=va;wa=a+60|0;i[wa>>0]=1;u=xa;return}c=k[ka>>2]|0;b=0;while(1){d=k[c+(b<<2)>>2]|0;if((d|b|0)<=-1){b=109;break}ua=k[e>>2]|0;if(!((ua|0)>(b|0)&(ua|0)>(d|0))){b=109;break}ua=k[f>>2]|0;sa=ua+(b<<2)|0;ua=ua+(d<<2)|0;ta=k[sa>>2]|0;k[sa>>2]=k[ua>>2];k[ua>>2]=ta;b=b+1|0;if((b|0)>=(wa|0)){b=106;break}}if((b|0)==106){va=va<<1;va=va&2;va=va^2;va=va+-1|0;wa=a+84|0;k[wa>>2]=va;wa=a+60|0;i[wa>>0]=1;u=xa;return}else if((b|0)==109)Oa(15008,15045,187,15125)}function rk(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.0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,r=0,s=0,t=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;O=u;u=u+352|0;M=O+288|0;N=O+232|0;J=O+128|0;z=O+112|0;w=O+324|0;K=O+40|0;f=O+304|0;x=O;E=O+96|0;L=a+4|0;e=k[L>>2]|0;h=+p[c>>3];if((e|0)==1){o=1.0-h;h=0.0-+p[c+8>>3];m=a+8|0;e=k[m>>2]|0;if((e|0)<=-1)Oa(11919,12068,74,12145);n=k[a>>2]|0;j=k[a+24>>2]|0;if(!e){u=O;return}l=N+8|0;i=0;f=1;do{if((f|0)>0){g=aa(i,j)|0;e=0;do{f=n+(e+g<<4)|0;p[N>>3]=o;p[l>>3]=h;uk(M,f,N);k[f>>2]=k[M>>2];k[f+4>>2]=k[M+4>>2];k[f+8>>2]=k[M+8>>2];k[f+12>>2]=k[M+12>>2];e=e+1|0;f=k[L>>2]|0}while((e|0)<(f|0));e=k[m>>2]|0}i=i+1|0}while((i|0)<(e|0));u=O;return}if(h==0.0?!(+p[c+8>>3]!=0.0):0){u=O;return}y=a+8|0;F=k[y>>2]|0;G=d;if((F|0)<=-1)Oa(14697,13988,163,14058);j=e+-1|0;k[K>>2]=(k[a>>2]|0)+16;H=K+4|0;k[H>>2]=j;I=K+8|0;k[I>>2]=F;if((F|j|0)<=-1)Oa(13818,13988,175,14058);g=K+12|0;k[g>>2]=k[a>>2];k[g+4>>2]=k[a+4>>2];k[g+8>>2]=k[a+8>>2];k[g+12>>2]=k[a+12>>2];k[g+16>>2]=k[a+16>>2];k[g+20>>2]=k[a+20>>2];k[g+24>>2]=k[a+24>>2];k[K+40>>2]=1;k[K+44>>2]=0;k[K+48>>2]=k[K+36>>2];if((e|0)<=0)Oa(14177,13744,147,13812);q=b;n=k[q>>2]|0;q=k[q+4>>2]|0;B=b+12|0;s=B;r=k[s>>2]|0;s=k[s+4>>2]|0;C=b+40|0;t=k[C>>2]|0;D=b+48|0;v=k[D>>2]|0;A=b+24|0;i=f+4|0;k[i>>2]=k[A>>2];k[i+4>>2]=k[A+4>>2];k[i+8>>2]=k[A+8>>2];k[i+12>>2]=k[A+12>>2];m=K;l=k[m>>2]|0;m=k[m+4>>2]|0;f=x;e=f+40|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(e|0));if((q|0)!=(j|0))Oa(14710,14850,97,14920);if(!F)e=0;else{iF(d|0,0,F<<4|0)|0;e=F}p[z>>3]=1.0;p[z+8>>3]=0.0;w=w+4|0;k[M>>2]=G;k[M+8>>2]=e;f=N;k[f>>2]=l;k[f+4>>2]=m;k[N+8>>2]=F;f=N+12|0;g=x;e=f+40|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(e|0));l=J;k[l>>2]=n;k[l+4>>2]=q;l=J+12|0;k[l>>2]=r;k[l+4>>2]=s;l=J+24|0;k[l>>2]=k[i>>2];k[l+4>>2]=k[i+4>>2];k[l+8>>2]=k[i+8>>2];k[l+12>>2]=k[i+12>>2];k[J+40>>2]=t;k[J+48>>2]=v;vk(N,J,M,z);l=k[a>>2]|0;e=k[y>>2]|0;if(!((l|0)==0|(e|0)>-1))Oa(13818,13988,175,14058);f=a+24|0;g=k[f>>2]|0;if((k[L>>2]|0)<=0)Oa(13577,13744,122,13812);if((F|0)!=(e|0))Oa(14392,12207,710,12285);j=(F|0)>0;if(j){e=0;do{y=aa(e,g)|0;a=d+(e<<4)|0;p[a>>3]=+p[l+(y<<4)>>3]+ +p[a>>3];a=d+(e<<4)+8|0;p[a>>3]=+p[l+(y<<4)+8>>3]+ +p[a>>3];e=e+1|0}while((e|0)!=(F|0))};k[z>>2]=k[c>>2];k[z+4>>2]=k[c+4>>2];k[z+8>>2]=k[c+8>>2];k[z+12>>2]=k[c+12>>2];i=k[f>>2]|0;if((k[L>>2]|0)<=0)Oa(13577,13744,122,13812);g=J+8|0;k[g>>2]=k[z>>2];k[g+4>>2]=k[z+4>>2];k[g+8>>2]=k[z+8>>2];k[g+12>>2]=k[z+12>>2];if(j){f=N+8|0;e=0;do{L=aa(e,i)|0;k[M>>2]=k[g>>2];k[M+4>>2]=k[g+4>>2];k[M+8>>2]=k[g+8>>2];k[M+12>>2]=k[g+12>>2];uk(N,M,d+(e<<4)|0);z=l+(L<<4)|0;p[z>>3]=+p[z>>3]-+p[N>>3];L=l+(L<<4)+8|0;p[L>>3]=+p[L>>3]-+p[f>>3];e=e+1|0}while((e|0)!=(F|0))}e=k[b+4>>2]|0;k[w>>2]=k[c>>2];k[w+4>>2]=k[c+4>>2];k[w+8>>2]=k[c+8>>2];k[w+12>>2]=k[c+12>>2];if((e|0)<=-1)Oa(11919,12068,74,12145);k[E>>2]=k[w>>2];k[E+4>>2]=k[w+4>>2];k[E+8>>2]=k[w+8>>2];k[E+12>>2]=k[w+12>>2];L=b;z=k[L>>2]|0;L=k[L+4>>2]|0;d=B;B=k[d>>2]|0;d=k[d+4>>2]|0;b=k[C>>2]|0;c=k[D>>2]|0;k[J+8>>2]=e;e=J+16|0;k[e>>2]=k[E>>2];k[e+4>>2]=k[E+4>>2];k[e+8>>2]=k[E+8>>2];k[e+12>>2]=k[E+12>>2];e=J+32|0;k[e>>2]=z;k[e+4>>2]=L;e=J+44|0;k[e>>2]=B;k[e+4>>2]=d;e=J+56|0;k[e>>2]=k[A>>2];k[e+4>>2]=k[A+4>>2];k[e+8>>2]=k[A+8>>2];k[e+12>>2]=k[A+12>>2];k[J+72>>2]=b;k[J+80>>2]=c;e=J+88|0;k[e>>2]=G;k[J+96>>2]=F;if(!((k[H>>2]|0)==(L|0)?(k[I>>2]|0)==(F|0):0))Oa(14392,14928,176,13144);xk(K,J,e,M,N);u=O;return}function sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,g=0.0,h=0.0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0;r=u;u=u+48|0;m=r+32|0;n=r+16|0;o=r;j=k[a+4>>2]|0;q=j+-1|0;f=k[a>>2]|0;l=f+16|0;if((j|0)<=0)Oa(13818,13988,175,14058);if(!((q|0)==0|(j|0)==1)){i=+p[l>>3];e=+p[f+24>>3];e=i*i+e*e;if((q|0)!=1){a=1;do{h=+p[l+(a<<4)>>3];i=+p[l+(a<<4)+8>>3];e=e+(h*h+i*i);a=a+1|0}while((a|0)<(q|0))}}else e=0.0;i=+p[f>>3];h=+p[f+8>>3];g=h*h;if(!(!(e<=2.2250738585072014e-308)|!(g<=2.2250738585072014e-308))){k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;p[d>>3]=i;a=k[b+4>>2]|0;if((a|0)<=-1)Oa(11919,12068,74,12145);if(!a){u=r;return}iF(k[b>>2]|0,0,a<<4|0)|0;u=r;return}e=+Q(+(e+(i*i+g)));e=!(i>=0.0)?e:-e;p[d>>3]=e;g=i-e;if((k[b+4>>2]|0)!=(q|0))Oa(14445,14320,257,12780);b=k[b>>2]|0;if((j|0)>1){f=n+8|0;a=0;do{j=l+(a<<4)|0;k[m>>2]=k[j>>2];k[m+4>>2]=k[j+4>>2];k[m+8>>2]=k[j+8>>2];k[m+12>>2]=k[j+12>>2];p[n>>3]=g;p[f>>3]=h;tk(o,m,n);j=b+(a<<4)|0;k[j>>2]=k[o>>2];k[j+4>>2]=k[o+4>>2];k[j+8>>2]=k[o+8>>2];k[j+12>>2]=k[o+12>>2];a=a+1|0}while((a|0)!=(q|0));e=+p[d>>3]}p[c>>3]=(e-i)/e;p[c+8>>3]=-(-h/e);u=r;return}function tk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0,j=0.0,l=0,m=0,n=0.0,o=0.0,q=0.0;q=+p[b>>3];n=+p[b+8>>3];e=+p[c>>3];d=+p[c+8>>3];j=+iq(+gq(+P(+e),+P(+d)));p[s>>3]=j;l=k[s>>2]|0;m=k[s+4>>2]|0;i=m&2146435072;b=~~j;c=0-b|0;if(i>>>0<2146435072|(i|0)==2146435072&0<0){e=+Ip(e,c);d=+Ip(d,c)}else b=0;f=e*e+d*d;i=0-b|0;g=+Ip((q*e+n*d)/f,i);h=+Ip((n*e-q*d)/f,i);p[s>>3]=g;i=k[s+4>>2]&2147483647;if(!(i>>>0>2146435072|(i|0)==2146435072&(k[s>>2]|0)>>>0>0)){q=h;o=g;p[a>>3]=o;a=a+8|0;p[a>>3]=q;return}p[s>>3]=h;i=k[s+4>>2]&2147483647;if(!(i>>>0>2146435072|(i|0)==2146435072&(k[s>>2]|0)>>>0>0)){q=h;o=g;p[a>>3]=o;a=a+8|0;p[a>>3]=q;return}p[s>>3]=q;b=k[s>>2]|0;i=k[s+4>>2]|0;c=i&2147483647;do if(!(f==0.0))if((b|0)==0&(c|0)==2146435072){o=1.0;b=11}else b=10;else{if(c>>>0>2146435072|(c|0)==2146435072&b>>>0>0?(p[s>>3]=n,c=k[s+4>>2]&2147483647,c>>>0>2146435072|(c|0)==2146435072&(k[s>>2]|0)>>>0>0):0){b=10;break}j=+So(D,e);o=n*j;q=q*j;p[a>>3]=q;a=a+8|0;p[a>>3]=o;return}while(0);if((b|0)==10?(p[s>>3]=n,(k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0):0){o=0.0;b=11}if(((b|0)==11?(p[s>>3]=e,c=k[s+4>>2]&2146435072,c>>>0<2146435072|(c|0)==2146435072&0<0):0)?(p[s>>3]=d,c=k[s+4>>2]&2146435072,c>>>0<2146435072|(c|0)==2146435072&0<0):0){j=+So(o,q);p[s>>3]=n;o=+So(((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)?1.0:0.0,n);q=(e*o-d*j)*D;o=(e*j+d*o)*D;p[a>>3]=o;a=a+8|0;p[a>>3]=q;return}i=i&2146435072;if(!((i>>>0<2146435072|(i|0)==2146435072&0<0)&(j>0.0&((l|0)==0&(m&2147483647|0)==2146435072)))){q=h;o=g;p[a>>3]=o;a=a+8|0;p[a>>3]=q;return}p[s>>3]=n;m=k[s+4>>2]&2146435072;if(!(m>>>0<2146435072|(m|0)==2146435072&0<0)){q=h;o=g;p[a>>3]=o;a=a+8|0;p[a>>3]=q;return}p[s>>3]=e;h=+So(((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)?1.0:0.0,e);p[s>>3]=d;j=+So(((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)?1.0:0.0,d);o=(n*h-q*j)*0.0;q=(q*h+n*j)*0.0;p[a>>3]=q;a=a+8|0;p[a>>3]=o;return}function uk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,t=0.0,u=0;d=+p[b>>3];g=+p[b+8>>3];e=+p[c>>3];f=+p[c+8>>3];t=d*e;m=g*f;n=d*f;o=g*e;q=t-m;r=o+n;p[s>>3]=q;l=k[s+4>>2]&2147483647;if(!(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0)){t=r;r=q;p[a>>3]=r;a=a+8|0;p[a>>3]=t;return}p[s>>3]=r;l=k[s+4>>2]&2147483647;if(!(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0)){t=r;r=q;p[a>>3]=r;a=a+8|0;p[a>>3]=t;return}p[s>>3]=d;h=(k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0;p[s>>3]=g;b=k[s>>2]|0;c=k[s+4>>2]&2147483647;if(!h)if((b|0)==0&(c|0)==2146435072){b=0;c=2146435072;u=5}else l=0;else u=5;if((u|0)==5){d=+So(h?1.0:0.0,d);g=+So((b|0)==0&(c|0)==2146435072?1.0:0.0,g);p[s>>3]=e;l=k[s+4>>2]&2147483647;if(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0)e=+So(0.0,e);p[s>>3]=f;l=k[s+4>>2]&2147483647;if(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0){l=1;f=+So(0.0,f)}else l=1}p[s>>3]=e;h=k[s>>2]|0;i=k[s+4>>2]&2147483647;j=(h|0)==0&(i|0)==2146435072;p[s>>3]=f;c=k[s>>2]|0;b=k[s+4>>2]&2147483647;if(!j)if(!((c|0)==0&(b|0)==2146435072)){if(!l){p[s>>3]=t;if(((!((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)?(p[s>>3]=m,!((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)):0)?(p[s>>3]=n,!((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)):0)?(p[s>>3]=o,!((k[s>>2]|0)==0?(k[s+4>>2]&2147483647|0)==2146435072:0)):0){t=r;r=q;p[a>>3]=r;a=a+8|0;p[a>>3]=t;return}p[s>>3]=d;l=k[s+4>>2]&2147483647;if(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0)d=+So(0.0,d);p[s>>3]=g;l=k[s+4>>2]&2147483647;if(l>>>0>2146435072|(l|0)==2146435072&(k[s>>2]|0)>>>0>0)g=+So(0.0,g);if(i>>>0>2146435072|(i|0)==2146435072&h>>>0>0)e=+So(0.0,e);if(b>>>0>2146435072|(b|0)==2146435072&c>>>0>0)f=+So(0.0,f)}}else{c=0;b=2146435072;u=11}else u=11;if((u|0)==11){e=+So(j?1.0:0.0,e);f=+So((c|0)==0&(b|0)==2146435072?1.0:0.0,f);p[s>>3]=d;u=k[s+4>>2]&2147483647;if(u>>>0>2146435072|(u|0)==2146435072&(k[s>>2]|0)>>>0>0)d=+So(0.0,d);p[s>>3]=g;u=k[s+4>>2]&2147483647;if(u>>>0>2146435072|(u|0)==2146435072&(k[s>>2]|0)>>>0>0)g=+So(0.0,g)}t=(e*g+f*d)*D;r=(e*d-f*g)*D;p[a>>3]=r;a=a+8|0;p[a>>3]=t;return}function vk(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,j=0,l=0,m=0,n=0,o=0;o=u;u=u+64|0;h=o+48|0;l=o+32|0;m=o+16|0;n=o;g=k[a>>2]|0;i=k[a+4>>2]|0;j=k[a+8>>2]|0;f=k[a+48>>2]|0;a=k[b>>2]|0;b=k[b+4>>2]|0;p[m>>3]=1.0;p[m+8>>3]=0.0;uk(h,d,m);p[n>>3]=1.0;p[n+8>>3]=-0.0;uk(l,h,n);if(b>>>0>268435455){o=Kb(4)|0;cF(o);Cc(o|0,2032,79)}d=(a|0)==0;e=b<<4;if(d)if(e>>>0>=131073){b=Oq(e+16|0)|0;a=b+16&-16;if(!b){o=Kb(4)|0;cF(o);Cc(o|0,2032,79)}k[a+-4>>2]=b;if(!a){o=Kb(4)|0;cF(o);Cc(o|0,2032,79)}}else{a=u;u=u+((1*(e|15)|0)+15&-16)|0;a=a+15&-16}b=d?a:0;k[m>>2]=g;k[m+4>>2]=f;k[n>>2]=a;k[n+4>>2]=1;a=k[c>>2]|0;if(!((a|0)==0?1:(k[c+8>>2]|0)>-1))Oa(13818,13988,175,14058);k[h>>2]=k[l>>2];k[h+4>>2]=k[l+4>>2];k[h+8>>2]=k[l+8>>2];k[h+12>>2]=k[l+12>>2];wk(j,i,m,n,a,1,h);if((b|0)==0|e>>>0>131072^1){u=o;return}Pq(k[b+-4>>2]|0);u=o;return}function wk(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;var h=0,i=0.0,j=0.0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0;T=u;u=u+80|0;R=T+64|0;S=T+48|0;P=T+32|0;N=T+16|0;O=T;Q=c+4|0;M=(k[d>>2]&15|0)!=0;h=M<<31>>31;L=k[c>>2]|0;n=L;if(!((L&15|0)==0?!((h|0)==(a|0)|(M|(b|0)==0)):0))h=0;l=((a|0)/4|0)<<2;a:do if((a|0)>3){E=R+8|0;F=S+8|0;G=P+8|0;H=N+8|0;I=(b|0)>0;J=O+8|0;K=O+8|0;L=O+8|0;M=O+8|0;m=0;while(1){k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;q=k[Q>>2]|0;r=n+((aa(q,m)|0)<<4)|0;s=m|1;t=n+((aa(q,s)|0)<<4)|0;B=m|2;C=n+((aa(q,B)|0)<<4)|0;D=m|3;q=n+((aa(q,D)|0)<<4)|0;if(I){o=k[d>>2]|0;n=0;i=0.0;j=0.0;v=0.0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;do{X=+p[o+(n<<4)>>3];V=+p[o+(n<<4)+8>>3];Y=r+(n<<4)|0;U=+p[Y>>3];W=+p[Y+8>>3];z=z+(X*U+V*W);p[R>>3]=z;A=X*W-V*U+A;p[E>>3]=A;Y=t+(n<<4)|0;U=+p[Y>>3];W=+p[Y+8>>3];i=i+(X*U+V*W);p[S>>3]=i;j=X*W-V*U+j;p[F>>3]=j;Y=C+(n<<4)|0;U=+p[Y>>3];W=+p[Y+8>>3];v=v+(X*U+V*W);p[P>>3]=v;w=X*W-V*U+w;p[G>>3]=w;Y=q+(n<<4)|0;U=+p[Y>>3];W=+p[Y+8>>3];x=x+(X*U+V*W);p[N>>3]=x;y=X*W-V*U+y;p[H>>3]=y;n=n+1|0}while((n|0)!=(b|0))}uk(O,g,R);Y=aa(m,f)|0;C=e+(Y<<4)|0;p[C>>3]=+p[O>>3]+ +p[C>>3];Y=e+(Y<<4)+8|0;p[Y>>3]=+p[J>>3]+ +p[Y>>3];uk(O,g,S);Y=aa(s,f)|0;C=e+(Y<<4)|0;p[C>>3]=+p[O>>3]+ +p[C>>3];Y=e+(Y<<4)+8|0;p[Y>>3]=+p[K>>3]+ +p[Y>>3];uk(O,g,P);Y=aa(B,f)|0;C=e+(Y<<4)|0;p[C>>3]=+p[O>>3]+ +p[C>>3];Y=e+(Y<<4)+8|0;p[Y>>3]=+p[L>>3]+ +p[Y>>3];uk(O,g,N);Y=aa(D,f)|0;D=e+(Y<<4)|0;p[D>>3]=+p[O>>3]+ +p[D>>3];Y=e+(Y<<4)+8|0;p[Y>>3]=+p[M>>3]+ +p[Y>>3];m=m+4|0;if((m|0)>=(l|0))break a;n=k[c>>2]|0}}while(0);if((l|0)>=(a|0)){u=T;return}q=R+8|0;r=(h|0)<0;s=(b|0)>0;t=S+8|0;do{k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;o=(k[c>>2]|0)+((aa(k[Q>>2]|0,l)|0)<<4)|0;if(r){P=o+(h<<4)|0;Y=k[d>>2]|0;X=+p[P>>3];V=+p[P+8>>3];W=+p[Y+(h<<4)>>3];i=+p[Y+(h<<4)+8>>3];j=X*W+V*i+0.0;i=V*W-X*i+0.0;p[R>>3]=j;p[q>>3]=i}else{i=0.0;j=0.0}if(s){n=k[d>>2]|0;m=0;do{Y=o+(m<<4)|0;W=+p[Y>>3];U=+p[Y+8>>3];V=+p[n+(m<<4)>>3];X=+p[n+(m<<4)+8>>3];j=j+(W*V+U*X);p[R>>3]=j;i=U*V-W*X+i;p[q>>3]=i;m=m+1|0}while((m|0)!=(b|0))}uk(S,g,R);Y=aa(l,f)|0;P=e+(Y<<4)|0;p[P>>3]=+p[S>>3]+ +p[P>>3];Y=e+(Y<<4)+8|0;p[Y>>3]=+p[t>>3]+ +p[Y>>3];l=l+1|0}while((l|0)!=(a|0));u=T;return}function xk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+96|0;t=x+48|0;v=x+32|0;i=x;w=x+88|0;h=x+68|0;r=k[c>>2]|0;k[w>>2]=0;s=w+4|0;k[s>>2]=0;g=b+16|0;f=i+8|0;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];k[f+12>>2]=k[g+12>>2];g=k[b+32>>2]|0;c=k[b+36>>2]|0;if(c|0){yk(w,c,1);if((k[s>>2]|0)!=(c|0))Oa(12160,12207,721,12285);e=k[w>>2]|0;if((c|0)>0){d=0;do{k[t>>2]=k[f>>2];k[t+4>>2]=k[f+4>>2];k[t+8>>2]=k[f+8>>2];k[t+12>>2]=k[f+12>>2];uk(v,t,g+(d<<4)|0);q=e+(d<<4)|0;k[q>>2]=k[v>>2];k[q+4>>2]=k[v+4>>2];k[q+8>>2]=k[v+8>>2];k[q+12>>2]=k[v+12>>2];d=d+1|0}while((d|0)!=(c|0))}}m=a+8|0;n=k[m>>2]|0;a:do if((n|0)>0){o=a+48|0;q=a+4|0;l=t+4|0;j=h+4|0;c=i+8|0;f=v+8|0;e=0;while(1){b=(k[a>>2]|0)+((aa(k[o>>2]|0,e)|0)<<4)|0;g=k[q>>2]|0;if(!((g|0)>-1|(b|0)==0)){d=13;break}if((k[m>>2]|0)<=(e|0)){d=15;break}i=r+(e<<4)|0;d=k[s>>2]|0;k[l>>2]=k[i>>2];k[l+4>>2]=k[i+4>>2];k[l+8>>2]=k[i+8>>2];k[l+12>>2]=k[i+12>>2];if((d|0)<=-1){d=17;break};k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];k[j+12>>2]=k[l+12>>2];k[c>>2]=k[j>>2];k[c+4>>2]=k[j+4>>2];k[c+8>>2]=k[j+8>>2];k[c+12>>2]=k[j+12>>2];h=k[w>>2]|0;if((g|0)!=(d|0)){d=19;break}if((g|0)>0){d=0;do{k[t>>2]=k[c>>2];k[t+4>>2]=k[c+4>>2];k[t+8>>2]=k[c+8>>2];k[t+12>>2]=k[c+12>>2];uk(v,t,h+(d<<4)|0);i=b+(d<<4)|0;p[i>>3]=+p[i>>3]-+p[v>>3];i=b+(d<<4)+8|0;p[i>>3]=+p[i>>3]-+p[f>>3];d=d+1|0}while((d|0)!=(g|0))}e=e+1|0;if((e|0)>=(n|0))break a}if((d|0)==13)Oa(13818,13988,175,14058);else if((d|0)==15)Oa(13577,13744,122,13812);else if((d|0)==17)Oa(11919,12068,74,12145);else if((d|0)==19)Oa(14392,12207,710,12285)}while(0);d=k[w>>2]|0;if(!d){u=x;return}Pq(k[d+-4>>2]|0);u=x;return}function yk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!((b|0)>-1&(c|0)==1))Oa(12303,12702,285,12780);f=a+4|0;if((k[f>>2]|0)==(b|0)){k[f>>2]=b;return}c=k[a>>2]|0;if(c|0)Pq(k[c+-4>>2]|0);do if(b){if(b>>>0>268435455){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}e=b<<4;d=Oq(e+16|0)|0;c=d+16&-16;if(!d)c=0;else k[c+-4>>2]=d;if((e|0)!=0&(c|0)==0){b=Kb(4)|0;cF(b);Cc(b|0,2032,79)}else break}else c=0;while(0);k[a>>2]=c;k[f>>2]=b;return}function zk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(!(d&1)){d=c;e=+Vc[d&7](a);return +e}else{d=k[(k[a>>2]|0)+c>>2]|0;e=+Vc[d&7](a);return +e}return 0.0}function Ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);f=CA(16)|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[f+12>>2]=k[d+12>>2];u=e;return f|0}function Bk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;k[a>>2]=0;j=a+4|0;k[j>>2]=0;l=a+8|0;k[l>>2]=0;e=b+4|0;c=k[e>>2]|0;f=b+8|0;d=k[f>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){l=Kb(4)|0;cF(l);Cc(l|0,2032,79)}ak(a,c,d);i=k[b>>2]|0;h=k[b+24>>2]|0;g=k[e>>2]|0;c=k[f>>2]|0;if(!((k[j>>2]|0)==(g|0)?(k[l>>2]|0)==(c|0):0)){ak(a,g,c);if((k[j>>2]|0)!=(g|0))Oa(12160,12207,721,12285);if((k[l>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}a=k[a>>2]|0;if((c|0)>0){f=0;d=g}else return;do{if((d|0)>0){b=aa(f,g)|0;e=aa(f,h)|0;c=0;do{vF(a+(c+b<<4)|0,i+(c+e<<4)|0,16)|0;c=c+1|0;d=k[j>>2]|0}while((c|0)<(d|0));c=k[l>>2]|0}f=f+1|0}while((f|0)<(c|0));return}function Ck(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 g=0,h=0,i=0,j=0;i=u;u=u+16|0;h=i;g=k[a>>2]|0;j=k[a+4>>2]|0;a=b+(j>>1)|0;if(j&1)g=k[(k[a>>2]|0)+g>>2]|0;Tc[g&15](h,a,c,d,e,f);a=gk(h)|0;g=k[h>>2]|0;if(!g){u=i;return a|0}Pq(k[g+-4>>2]|0);u=i;return a|0}function Dk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function Ek(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function Fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=u;u=u+64|0;l=n+16|0;m=n;e=n+32|0;k[a>>2]=0;h=a+4|0;k[h>>2]=0;i=a+8|0;k[i>>2]=0;f=b+8|0;c=k[f>>2]|0;g=b+12|0;d=k[g>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}ak(a,c,d);j=k[k[b>>2]>>2]|0;d=b+16|0;b=e+4|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[b+12>>2]=k[d+12>>2];d=k[f>>2]|0;c=k[g>>2]|0;if(!((k[h>>2]|0)==(d|0)?(k[i>>2]|0)==(c|0):0)){ak(a,d,c);if((k[h>>2]|0)!=(d|0))Oa(12160,12207,721,12285);if((k[i>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}e=k[a>>2]|0;d=aa(c,d)|0;if((d|0)<=0){u=n;return}c=0;do{k[l>>2]=k[b>>2];k[l+4>>2]=k[b+4>>2];k[l+8>>2]=k[b+8>>2];k[l+12>>2]=k[b+12>>2];uk(m,j+(c<<4)|0,l);i=e+(c<<4)|0;k[i>>2]=k[m>>2];k[i+4>>2]=k[m+4>>2];k[i+8>>2]=k[m+8>>2];k[i+12>>2]=k[m+12>>2];c=c+1|0}while((c|0)!=(d|0));u=n;return}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Hk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;d=k[(k[b>>2]|0)+4>>2]|0;i=b+4|0;c=k[(k[i>>2]|0)+8>>2]|0;if(!((d|0)==0|(c|0)==0)?(2147483647/(c|0)|0|0)<(d|0):0){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}ak(a,d,c);c=k[b>>2]|0;d=k[c+4>>2]|0;e=k[i>>2]|0;f=k[e+8>>2]|0;if((k[g>>2]|0)==(d|0)?(k[h>>2]|0)==(f|0):0){h=c;i=e;Ik(a,h,i);return}ak(a,d,f);h=k[b>>2]|0;i=k[i>>2]|0;Ik(a,h,i);return}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+32|0;h=i;e=i+16|0;f=k[c+4>>2]|0;g=k[a+4>>2]|0;d=k[a+8>>2]|0;if((f|0)>0&(g+f+d|0)<20){k[h>>2]=b;k[h+4>>2]=c;if((k[b+8>>2]|0)!=(f|0))Oa(14710,14850,97,14920);Kk(a,h,e);u=i;return}if((d|g|0)<=-1)Oa(11919,12068,74,12145);d=aa(d,g)|0;if((d|0)>0)iF(k[a>>2]|0,0,d<<4|0)|0;p[h>>3]=1.0;p[h+8>>3]=0.0;Jk(a,b,c,h);u=i;return}function Jk(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,j=0,l=0,m=0,n=0,o=0,q=0,r=0;r=u;u=u+112|0;e=r+88|0;j=r+72|0;q=r+40|0;l=r;m=a+4|0;n=k[m>>2]|0;o=b+4|0;if((n|0)!=(k[o>>2]|0))Oa(15296,15349,460,15440);f=a+8|0;g=k[f>>2]|0;h=c+8|0;if((g|0)!=(k[h>>2]|0))Oa(15296,15349,460,15440);i=b+8|0;if((g|0)==0|((n|0)==0|(k[i>>2]|0)==0)){u=r;return}p[q>>3]=1.0;p[q+8>>3]=0.0;uk(e,d,q);p[l>>3]=1.0;p[l+8>>3]=0.0;uk(j,e,l);g=k[m>>2]|0;f=k[f>>2]|0;d=k[i>>2]|0;i=q;k[i>>2]=0;k[i+4>>2]=0;i=q+8|0;k[i>>2]=g;g=q+12|0;k[g>>2]=f;f=q+16|0;k[f>>2]=d;Mk(f,i,g,1);f=k[f>>2]|0;i=aa(f,k[i>>2]|0)|0;k[q+20>>2]=i;f=aa(k[g>>2]|0,f)|0;k[q+24>>2]=f;k[l>>2]=b;k[l+4>>2]=c;k[l+8>>2]=a;f=l+16|0;k[f>>2]=k[j>>2];k[f+4>>2]=k[j+4>>2];k[f+8>>2]=k[j+8>>2];k[f+12>>2]=k[j+12>>2];k[l+32>>2]=q;g=k[o>>2]|0;h=k[h>>2]|0;i=k[b+8>>2]|0;d=k[b>>2]|0;j=k[b+4>>2]|0;l=k[c>>2]|0;m=k[c+4>>2]|0;n=k[a>>2]|0;o=k[a+4>>2]|0;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];k[e+8>>2]=k[f+8>>2];k[e+12>>2]=k[f+12>>2];Nk(g,h,i,d,j,l,m,n,o,e,q,0);e=k[q>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);e=k[q+4>>2]|0;if(e|0)Pq(k[e+-4>>2]|0);u=r;return}function Kk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=u;u=u+48|0;i=l;j=l+16|0;g=k[b>>2]|0;k[j>>2]=g;e=k[b+4>>2]|0;k[j+4>>2]=e;h=g;k[j+8>>2]=k[g>>2];g=k[h+4>>2]|0;k[j+12>>2]=g;k[j+16>>2]=k[e>>2];k[j+20>>2]=k[e+4>>2];k[j+24>>2]=k[h+8>>2];e=k[e+8>>2]|0;h=a+4|0;if((k[h>>2]|0)==(g|0)?(d=a+8|0,(k[d>>2]|0)==(e|0)):0)m=d;else{ak(a,g,e);if((k[h>>2]|0)!=(g|0))Oa(12160,12207,721,12285);c=a+8|0;if((k[c>>2]|0)==(e|0))m=c;else Oa(12160,12207,721,12285)}f=k[a>>2]|0;if((e|0)<=0){u=l;return}a=0;b=g;c=e;do{if((b|0)>0){d=aa(a,g)|0;c=0;do{Lk(i,j,c,a);b=f+(c+d<<4)|0;k[b>>2]=k[i>>2];k[b+4>>2]=k[i+4>>2];k[b+8>>2]=k[i+8>>2];k[b+12>>2]=k[i+12>>2];c=c+1|0;b=k[h>>2]|0}while((c|0)<(b|0));c=k[m>>2]|0}a=a+1|0}while((a|0)<(c|0));u=l;return}function Lk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;q=u;u=u+48|0;l=q+32|0;m=q+16|0;n=q;e=k[b>>2]|0;o=(k[e>>2]|0)+(c<<4)|0;j=k[e+8>>2]|0;if(!((o|0)==0|(j|0)>-1))Oa(13818,13988,175,14058);if((c|0)<=-1)Oa(13577,13744,122,13812);i=k[e+4>>2]|0;if((i|0)<=(c|0))Oa(13577,13744,122,13812);e=k[b+4>>2]|0;b=k[e+4>>2]|0;h=(k[e>>2]|0)+((aa(b,d)|0)<<4)|0;if(!((b|0)>-1|(h|0)==0))Oa(13818,13988,175,14058);if((d|0)<=-1)Oa(13577,13744,122,13812);if((k[e+8>>2]|0)<=(d|0))Oa(13577,13744,122,13812);if((j|0)!=(b|0))Oa(14550,14607,110,14683);if(!j){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;u=q;return}if((j|0)<=0)Oa(13148,13216,413,13284);b=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[l>>2]=k[o>>2];k[l+4>>2]=k[o+4>>2];k[l+8>>2]=k[o+8>>2];k[l+12>>2]=k[o+12>>2];k[m>>2]=k[h>>2];k[m+4>>2]=k[h+4>>2];k[m+8>>2]=k[h+8>>2];k[m+12>>2]=k[h+12>>2];uk(n,l,m);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];k[a+12>>2]=k[n+12>>2];if((j|0)==1){u=q;return}c=n+8|0;e=1;f=+p[a>>3];g=+p[b>>3];do{d=o+((aa(e,i)|0)<<4)|0;k[l>>2]=k[d>>2];k[l+4>>2]=k[d+4>>2];k[l+8>>2]=k[d+8>>2];k[l+12>>2]=k[d+12>>2];d=h+(e<<4)|0;k[m>>2]=k[d>>2];k[m+4>>2]=k[d+4>>2];k[m+8>>2]=k[d+8>>2];k[m+12>>2]=k[d+12>>2];uk(n,l,m);f=f+ +p[n>>3];g=g+ +p[c>>3];p[a>>3]=f;p[b>>3]=g;e=e+1|0}while((e|0)<(j|0));u=q;return}function Mk(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,j=0,l=0,m=0,n=0,o=0;if((i[31304]|0)==0?aF(31304)|0:0){k[7994]=16384;k[7995]=524288;k[7996]=524288}m=k[7994]|0;o=k[7995]|0;n=k[7996]|0;if((d|0)>1){f=(m+-64|0)/80|0;f=(f|0)<320?f:320;e=k[a>>2]|0;if((f|0)<(e|0)){e=f-((f|0)%8|0)|0;k[a>>2]=e}e=((o-m|0)>>>0)/(e<<6>>>0)|0;f=k[c>>2]|0;h=d+-1|0;g=(h+f|0)/(d|0)|0;if((e|0)>(g|0)){e=g+3|0;e=e-((e|0)%4|0)|0;e=(e|0)<(f|0)?e:f}else e=e-((e|0)%4|0)|0;k[c>>2]=e;if((n|0)<=(o|0))return;f=((n-o|0)>>>0)/((aa(d<<4,k[a>>2]|0)|0)>>>0)|0;g=k[b>>2]|0;e=(h+g|0)/(d|0)|0;if((f|0)>0&(f|0)<(e|0)){k[b>>2]=f;return}else{k[b>>2]=(e|0)<(g|0)?e:g;return}}e=k[b>>2]|0;f=k[c>>2]|0;j=(e|0)<(f|0)?f:e;l=k[a>>2]|0;if((((l|0)<(j|0)?j:l)|0)<48)return;d=m+-64|0;j=((d|0)/80|0)&-8;j=(j|0)>1?j:1;if((l|0)>(j|0)){e=(l|0)%(j|0)|0;if(!e)e=j;else e=j-(((j+-1-e|0)/((((l|0)/(j|0)|0)<<3)+8|0)|0)<<3)|0;k[a>>2]=e;a=k[b>>2]|0;g=e;h=k[c>>2]|0}else{a=e;g=l;h=f}d=d-(aa(a<<4,g)|0)|0;e=(d|0)<(g<<6|0);j=((e?4718592:d)>>>0)/((e?j<<6:g<<4)>>>0)|0;e=1572864/(g<<5>>>0)|0;e=((j|0)<(e|0)?j:e)&-4;if((h|0)>(e|0)){f=(h|0)%(e|0)|0;if(f)e=e-(((e-f|0)/((((h|0)/(e|0)|0)<<2)+4|0)|0)<<2)|0;k[c>>2]=e;return}if((l|0)!=(g|0))return;e=aa(l<<4,h)|0;if((e|0)<1025){f=a;e=m}else{e=(n|0)!=0&(e|0)<32769;f=e?((a|0)<576?a:576):a;e=e?o:1572864}e=(e>>>0)/((l*48|0)>>>0)|0;e=(f|0)<(e|0)?f:e;if(!e)return;f=(a|0)%(e|0)|0;if(f)e=e-((e-f|0)/(((a|0)/(e|0)|0)+1|0)|0)|0;k[b>>2]=e;return}function Nk(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=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;O=u;u=u+32|0;G=O;J=O+26|0;K=O+25|0;L=O+24|0;M=O+16|0;N=k[l+16>>2]|0;I=k[l+8>>2]|0;q=(I|0)<(a|0);I=q?I:a;r=k[l+12>>2]|0;H=(r|0)<(b|0)?r:b;m=aa(I,N)|0;p=aa(H,N)|0;if(m>>>0>268435455){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}n=k[l>>2]|0;o=m<<4;if(!n)do if(o>>>0>=131073){m=Oq(o+16|0)|0;n=m+16&-16;if(!m){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[n+-4>>2]=m;if(!n){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}else{m=k[l>>2]|0;break}}else{n=u;u=u+((1*(o|15)|0)+15&-16)|0;n=n+15&-16;m=0}while(0);else m=n;F=(m|0)==0?n:0;E=o>>>0>131072;if(p>>>0>268435455){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}l=l+4|0;o=k[l>>2]|0;p=p<<4;if(!o)do if(p>>>0>=131073){m=Oq(p+16|0)|0;o=m+16&-16;if(!m){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[o+-4>>2]=m;if(!o){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}else{m=k[l>>2]|0;break}}else{o=u;u=u+((1*(p|15)|0)+15&-16)|0;o=o+15&-16;m=0}while(0);else m=o;D=(m|0)==0?o:0;z=p>>>0>131072;if((a|0)>0){A=(c|0)>0;B=G+4|0;C=(b|0)>0;s=(N|0)==(c|0)&q&(r|0)>=(b|0)^1;v=G+4|0;w=M+4|0;q=0;do{r=q;q=q+I|0;x=((q|0)>(a|0)?a:q)-r|0;if(A){y=(r|0)==0|s;p=0;do{l=p;p=p+N|0;t=((p|0)>(c|0)?c:p)-l|0;m=d+((aa(l,e)|0)+r<<4)|0;k[G>>2]=m;k[B>>2]=e;Ok(J,n,G,t,x,0,0);if(C)if(y){m=0;do{Q=m;m=m+H|0;P=((m|0)>(b|0)?b:m)-Q|0;R=f+((aa(Q,g)|0)+l<<4)|0;k[G>>2]=R;k[v>>2]=g;Pk(K,o,G,t,P,0,0);Q=h+((aa(Q,i)|0)+r<<4)|0;k[M>>2]=Q;k[w>>2]=i;k[G>>2]=k[j>>2];k[G+4>>2]=k[j+4>>2];k[G+8>>2]=k[j+8>>2];k[G+12>>2]=k[j+12>>2];Qk(L,M,n,o,x,t,P,G,-1,-1,0,0)}while((m|0)<(b|0))}else{m=0;do{R=m;m=m+H|0;Q=h+((aa(R,i)|0)+r<<4)|0;k[M>>2]=Q;k[w>>2]=i;k[G>>2]=k[j>>2];k[G+4>>2]=k[j+4>>2];k[G+8>>2]=k[j+8>>2];k[G+12>>2]=k[j+12>>2];Qk(L,M,n,o,x,t,((m|0)>(b|0)?b:m)-R|0,G,-1,-1,0,0)}while((m|0)<(b|0))}}while((p|0)<(c|0))}}while((q|0)<(a|0))}if(!((D|0)==0|z^1))Pq(k[D+-4>>2]|0);if((F|0)==0|E^1){u=O;return}Pq(k[F+-4>>2]|0);u=O;return}function Ok(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;var h=0,i=0,j=0.0,l=0,m=0;if(g|f|0)Oa(15454,15545,1705,29764);if((e|0)<=0)return;i=c+4|0;if((d|0)>0){f=0;g=0}else return;while(1){a=0;h=g;while(1){m=k[c>>2]|0;l=(aa(k[i>>2]|0,a)|0)+f|0;j=+p[m+(l<<4)+8>>3];p[b+(h<<4)>>3]=+p[m+(l<<4)>>3];p[b+(h<<4)+8>>3]=j;a=a+1|0;if((a|0)==(d|0))break;else h=h+1|0}f=f+1|0;if((f|0)==(e|0))break;else g=g+d|0}return}function Pk(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;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(g|f|0)Oa(15454,15545,1906,29764);i=((e|0)/4|0)<<2;if((e|0)>3?(q=c+4|0,(d|0)>0):0){j=d<<2;p=(i|0)>4?i:4;f=0;g=0;while(1){a=k[c>>2]|0;o=k[q>>2]|0;l=a+((aa(o,f)|0)<<4)|0;m=a+((aa(o,f|1)|0)<<4)|0;n=a+((aa(o,f|2)|0)<<4)|0;o=a+((aa(o,f|3)|0)<<4)|0;a=0;h=g;while(1){r=l+(a<<4)|0;s=b+(h<<4)|0;k[s>>2]=k[r>>2];k[s+4>>2]=k[r+4>>2];k[s+8>>2]=k[r+8>>2];k[s+12>>2]=k[r+12>>2];s=m+(a<<4)|0;r=b+((h|1)<<4)|0;k[r>>2]=k[s>>2];k[r+4>>2]=k[s+4>>2];k[r+8>>2]=k[s+8>>2];k[r+12>>2]=k[s+12>>2];r=n+(a<<4)|0;s=b+((h|2)<<4)|0;k[s>>2]=k[r>>2];k[s+4>>2]=k[r+4>>2];k[s+8>>2]=k[r+8>>2];k[s+12>>2]=k[r+12>>2];s=o+(a<<4)|0;r=b+((h|3)<<4)|0;k[r>>2]=k[s>>2];k[r+4>>2]=k[s+4>>2];k[r+8>>2]=k[s+8>>2];k[r+12>>2]=k[s+12>>2];a=a+1|0;if((a|0)==(d|0))break;else h=h+4|0}f=f+4|0;if((f|0)>=(i|0))break;else g=j+g|0}a=aa(p,d)|0}else a=0;if((i|0)>=(e|0))return;j=c+4|0;if((d|0)<=0)return;while(1){h=(k[c>>2]|0)+((aa(k[j>>2]|0,i)|0)<<4)|0;f=0;g=a;while(1){r=h+(f<<4)|0;s=b+(g<<4)|0;k[s>>2]=k[r>>2];k[s+4>>2]=k[r+4>>2];k[s+8>>2]=k[r+8>>2];k[s+12>>2]=k[r+12>>2];f=f+1|0;if((f|0)==(d|0))break;else g=g+1|0}i=i+1|0;if((i|0)==(e|0))break;else a=a+d|0}return}function Qk(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;var n=0.0,o=0.0,q=0,r=0,s=0,t=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,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.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0.0,rb=0.0,sb=0.0,tb=0.0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0.0,Jb=0.0,Kb=0.0,Lb=0.0,Mb=0.0,Nb=0.0;na=u;u=u+96|0;ha=na+80|0;ia=na+64|0;ja=na+48|0;ka=na+32|0;la=na+16|0;ma=na;ga=(i|0)==-1?f:i;M=(j|0)==-1?f:j;a=(g|0)/4|0;N=a<<2;O=f&-8;if((e|0)<=0){u=na;return}P=(g|0)>3;Q=(N|0)<(g|0);R=ia+8|0;S=b+4|0;T=(O|0)>0;U=(O|0)<(f|0);V=ha+8|0;W=ia+8|0;X=ja+8|0;Y=ka+8|0;Z=la+8|0;_=m<<2;$=ha+8|0;ba=ha+8|0;ca=ha+8|0;da=ha+8|0;K=(O+-1|0)>>>3;fa=d+((K<<5)+_+32<<4)|0;ea=M<<2;K=K<<3;L=d+(((aa(M,a)|0)<<2)+m+K+8<<4)|0;J=0;K=c+(K+l+8<<4)|0;while(1){if(P){r=c+((aa(J,ga)|0)+l<<4)|0;q=0;I=fa;while(1){k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;s=k[b>>2]|0;G=k[S>>2]|0;t=(aa(G,q)|0)+J|0;v=s+(t<<4)|0;C=(aa(G,q|1)|0)+J|0;D=s+(C<<4)|0;E=(aa(G,q|2)|0)+J|0;F=s+(E<<4)|0;G=(aa(G,q|3)|0)+J|0;H=s+(G<<4)|0;a=d+((aa(q,M)|0)+_<<4)|0;if(T){j=0;i=r;n=+p[ia>>3];o=+p[W>>3];w=+p[ja>>3];x=+p[X>>3];y=+p[ka>>3];z=+p[Y>>3];A=+p[la>>3];B=+p[Z>>3];while(1){pa=+p[i>>3];ra=+p[i+8>>3];zb=+p[a>>3];yb=+p[a+8>>3];jb=+p[a+16>>3];ib=+p[a+24>>3];Va=+p[a+32>>3];Ua=+p[a+40>>3];qa=+p[a+48>>3];oa=+p[a+56>>3];ta=+p[i+16>>3];va=+p[i+24>>3];Bb=+p[a+64>>3];Ab=+p[a+72>>3];lb=+p[a+80>>3];kb=+p[a+88>>3];Xa=+p[a+96>>3];Wa=+p[a+104>>3];ua=+p[a+112>>3];sa=+p[a+120>>3];xa=+p[i+32>>3];za=+p[i+40>>3];Db=+p[a+128>>3];Cb=+p[a+136>>3];nb=+p[a+144>>3];mb=+p[a+152>>3];Za=+p[a+160>>3];Ya=+p[a+168>>3];ya=+p[a+176>>3];wa=+p[a+184>>3];Ba=+p[i+48>>3];Da=+p[i+56>>3];Fb=+p[a+192>>3];Eb=+p[a+200>>3];pb=+p[a+208>>3];ob=+p[a+216>>3];$a=+p[a+224>>3];_a=+p[a+232>>3];Ca=+p[a+240>>3];Aa=+p[a+248>>3];Fa=+p[i+64>>3];Ha=+p[i+72>>3];Hb=+p[a+256>>3];Gb=+p[a+264>>3];rb=+p[a+272>>3];qb=+p[a+280>>3];bb=+p[a+288>>3];ab=+p[a+296>>3];Ga=+p[a+304>>3];Ea=+p[a+312>>3];Ja=+p[i+80>>3];La=+p[i+88>>3];Jb=+p[a+320>>3];Ib=+p[a+328>>3];tb=+p[a+336>>3];sb=+p[a+344>>3];db=+p[a+352>>3];cb=+p[a+360>>3];Ka=+p[a+368>>3];Ia=+p[a+376>>3];Na=+p[i+96>>3];Pa=+p[i+104>>3];Lb=+p[a+384>>3];Kb=+p[a+392>>3];vb=+p[a+400>>3];ub=+p[a+408>>3];fb=+p[a+416>>3];eb=+p[a+424>>3];Oa=+p[a+432>>3];Ma=+p[a+440>>3];Ra=+p[i+112>>3];Ta=+p[i+120>>3];Nb=+p[a+448>>3];Mb=+p[a+456>>3];xb=+p[a+464>>3];wb=+p[a+472>>3];hb=+p[a+480>>3];gb=+p[a+488>>3];Sa=+p[a+496>>3];Qa=+p[a+504>>3];n=Ra*Nb-Ta*Mb+(Na*Lb-Pa*Kb+(Ja*Jb-La*Ib+(Fa*Hb-Ha*Gb+(Ba*Fb-Da*Eb+(xa*Db-za*Cb+(ta*Bb-va*Ab+(pa*zb-ra*yb+n)))))));o=Ta*Nb+Ra*Mb+(Pa*Lb+Na*Kb+(La*Jb+Ja*Ib+(Ha*Hb+Fa*Gb+(Da*Fb+Ba*Eb+(za*Db+xa*Cb+(va*Bb+ta*Ab+(ra*zb+pa*yb+o)))))));w=Ra*xb-Ta*wb+(Na*vb-Pa*ub+(Ja*tb-La*sb+(Fa*rb-Ha*qb+(Ba*pb-Da*ob+(xa*nb-za*mb+(ta*lb-va*kb+(pa*jb-ra*ib+w)))))));x=Ta*xb+Ra*wb+(Pa*vb+Na*ub+(La*tb+Ja*sb+(Ha*rb+Fa*qb+(Da*pb+Ba*ob+(za*nb+xa*mb+(va*lb+ta*kb+(ra*jb+pa*ib+x)))))));y=Ra*hb-Ta*gb+(Na*fb-Pa*eb+(Ja*db-La*cb+(Fa*bb-Ha*ab+(Ba*$a-Da*_a+(xa*Za-za*Ya+(ta*Xa-va*Wa+(pa*Va-ra*Ua+y)))))));z=Ta*hb+Ra*gb+(Pa*fb+Na*eb+(La*db+Ja*cb+(Ha*bb+Fa*ab+(Da*$a+Ba*_a+(za*Za+xa*Ya+(va*Xa+ta*Wa+(ra*Va+pa*Ua+z)))))));A=Ra*Sa-Ta*Qa+(Na*Oa-Pa*Ma+(Ja*Ka-La*Ia+(Fa*Ga-Ha*Ea+(Ba*Ca-Da*Aa+(xa*ya-za*wa+(ta*ua-va*sa+(pa*qa-ra*oa+A)))))));B=Ta*Sa+Ra*Qa+(Pa*Oa+Na*Ma+(La*Ka+Ja*Ia+(Ha*Ga+Fa*Ea+(Da*Ca+Ba*Aa+(za*ya+xa*wa+(va*ua+ta*sa+(ra*qa+pa*oa+B)))))));j=j+8|0;if((j|0)>=(O|0))break;else{a=a+512|0;i=i+128|0}}p[ia>>3]=n;p[W>>3]=o;p[ja>>3]=w;p[X>>3]=x;p[ka>>3]=y;p[Y>>3]=z;p[la>>3]=A;p[Z>>3]=B;a=I;i=K}else i=r;if(U){j=O;n=+p[ia>>3];o=+p[W>>3];w=+p[ja>>3];x=+p[X>>3];y=+p[ka>>3];z=+p[Y>>3];A=+p[la>>3];B=+p[Z>>3];while(1){Mb=+p[i>>3];Kb=+p[i+8>>3];Eb=+p[a>>3];Fb=+p[a+8>>3];Gb=+p[a+16>>3];Hb=+p[a+24>>3];Ib=+p[a+32>>3];Jb=+p[a+40>>3];Lb=+p[a+48>>3];Nb=+p[a+56>>3];n=Mb*Eb-Kb*Fb+n;o=Kb*Eb+Mb*Fb+o;p[ia>>3]=n;p[W>>3]=o;w=Mb*Gb-Kb*Hb+w;x=Kb*Gb+Mb*Hb+x;p[ja>>3]=w;p[X>>3]=x;y=Mb*Ib-Kb*Jb+y;z=Kb*Ib+Mb*Jb+z;p[ka>>3]=y;p[Y>>3]=z;A=Mb*Lb-Kb*Nb+A;B=Kb*Lb+Mb*Nb+B;p[la>>3]=A;p[Z>>3]=B;j=j+1|0;if((j|0)==(f|0))break;else{a=a+64|0;i=i+16|0}}};k[ma>>2]=k[h>>2];k[ma+4>>2]=k[h+4>>2];k[ma+8>>2]=k[h+8>>2];k[ma+12>>2]=k[h+12>>2];Nb=+p[v>>3];t=s+(t<<4)+8|0;Mb=+p[t>>3];Lb=+p[D>>3];C=s+(C<<4)+8|0;Kb=+p[C>>3];uk(ha,ma,ia);Nb=Nb+ +p[ha>>3];Mb=Mb+ +p[$>>3];uk(ha,ma,ja);Lb=Lb+ +p[ha>>3];Kb=Kb+ +p[ba>>3];p[v>>3]=Nb;p[t>>3]=Mb;p[D>>3]=Lb;p[C>>3]=Kb;Kb=+p[F>>3];E=s+(E<<4)+8|0;Lb=+p[E>>3];Mb=+p[H>>3];G=s+(G<<4)+8|0;Nb=+p[G>>3];uk(ha,ma,ka);Kb=Kb+ +p[ha>>3];Lb=Lb+ +p[ca>>3];uk(ha,ma,la);Mb=Mb+ +p[ha>>3];Nb=Nb+ +p[da>>3];p[F>>3]=Kb;p[E>>3]=Lb;p[H>>3]=Mb;p[G>>3]=Nb;q=q+4|0;if((q|0)>=(N|0))break;else I=I+(ea<<4)|0}}if(Q){t=c+((aa(J,ga)|0)+l<<4)|0;q=N;v=L;while(1){k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;r=k[b>>2]|0;s=(aa(k[S>>2]|0,q)|0)+J|0;a=d+((aa(q,M)|0)+m<<4)|0;if(T){j=0;i=t;o=0.0;n=0.0;while(1){kb=+p[i>>3];ib=+p[i+8>>3];jb=+p[a>>3];lb=+p[a+8>>3];ob=+p[i+16>>3];mb=+p[i+24>>3];nb=+p[a+16>>3];pb=+p[a+24>>3];sb=+p[i+32>>3];qb=+p[i+40>>3];rb=+p[a+32>>3];tb=+p[a+40>>3];wb=+p[i+48>>3];ub=+p[i+56>>3];vb=+p[a+48>>3];xb=+p[a+56>>3];Ab=+p[i+64>>3];yb=+p[i+72>>3];zb=+p[a+64>>3];Bb=+p[a+72>>3];Eb=+p[i+80>>3];Cb=+p[i+88>>3];Db=+p[a+80>>3];Fb=+p[a+88>>3];Ib=+p[i+96>>3];Gb=+p[i+104>>3];Hb=+p[a+96>>3];Jb=+p[a+104>>3];Mb=+p[i+112>>3];Kb=+p[i+120>>3];Lb=+p[a+112>>3];Nb=+p[a+120>>3];o=o+(kb*jb-ib*lb)+(ob*nb-mb*pb)+(sb*rb-qb*tb)+(wb*vb-ub*xb)+(Ab*zb-yb*Bb)+(Eb*Db-Cb*Fb)+(Ib*Hb-Gb*Jb)+(Mb*Lb-Kb*Nb);n=ib*jb+kb*lb+n+(mb*nb+ob*pb)+(qb*rb+sb*tb)+(ub*vb+wb*xb)+(yb*zb+Ab*Bb)+(Cb*Db+Eb*Fb)+(Gb*Hb+Ib*Jb)+(Kb*Lb+Mb*Nb);j=j+8|0;if((j|0)>=(O|0))break;else{a=a+128|0;i=i+128|0}}p[ia>>3]=o;p[R>>3]=n;a=v;i=K}else{i=t;n=0.0;o=0.0}if(U){j=O;while(1){Mb=+p[i>>3];Kb=+p[i+8>>3];Lb=+p[a>>3];Nb=+p[a+8>>3];o=o+(Mb*Lb-Kb*Nb);n=Kb*Lb+Mb*Nb+n;p[ia>>3]=o;p[R>>3]=n;j=j+1|0;if((j|0)==(f|0))break;else{i=i+16|0;a=a+16|0}}};k[ja>>2]=k[h>>2];k[ja+4>>2]=k[h+4>>2];k[ja+8>>2]=k[h+8>>2];k[ja+12>>2]=k[h+12>>2];H=r+(s<<4)|0;Mb=+p[H>>3];I=r+(s<<4)+8|0;Nb=+p[I>>3];uk(ha,ja,ia);Nb=Nb+ +p[V>>3];p[H>>3]=Mb+ +p[ha>>3];p[I>>3]=Nb;q=q+1|0;if((q|0)==(g|0))break;else v=v+(M<<4)|0}}J=J+1|0;if((J|0)==(e|0))break;else K=K+(ga<<4)|0}u=na;return}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=gk(e)|0;d=k[e>>2]|0;if(!d){u=f;return a|0}Pq(k[d+-4>>2]|0);u=f;return a|0}function Sk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;e=b+4|0;d=k[e>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}ak(a,c,d);f=k[k[b>>2]>>2]|0;c=k[e>>2]|0;e=k[c>>2]|0;b=k[c+4>>2]|0;c=k[c+8>>2]|0;if(!((k[g>>2]|0)==(b|0)?(k[h>>2]|0)==(c|0):0)){ak(a,b,c);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else return;do{i=+p[f+(b<<4)+8>>3]+ +p[e+(b<<4)+8>>3];p[d+(b<<4)>>3]=+p[f+(b<<4)>>3]+ +p[e+(b<<4)>>3];p[d+(b<<4)+8>>3]=i;b=b+1|0}while((b|0)!=(c|0));return}function Tk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;h=a+8|0;k[h>>2]=0;e=b+4|0;d=k[e>>2]|0;c=k[d+4>>2]|0;d=k[d+8>>2]|0;if(!((c|0)==0|(d|0)==0)?(2147483647/(d|0)|0|0)<(c|0):0){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}ak(a,c,d);f=k[k[b>>2]>>2]|0;c=k[e>>2]|0;e=k[c>>2]|0;b=k[c+4>>2]|0;c=k[c+8>>2]|0;if(!((k[g>>2]|0)==(b|0)?(k[h>>2]|0)==(c|0):0)){ak(a,b,c);if((k[g>>2]|0)!=(b|0))Oa(12160,12207,721,12285);if((k[h>>2]|0)!=(c|0))Oa(12160,12207,721,12285)}d=k[a>>2]|0;c=aa(c,b)|0;if((c|0)>0)b=0;else return;do{i=+p[f+(b<<4)+8>>3]-+p[e+(b<<4)+8>>3];p[d+(b<<4)>>3]=+p[f+(b<<4)>>3]-+p[e+(b<<4)>>3];p[d+(b<<4)+8>>3]=i;b=b+1|0}while((b|0)!=(c|0));return}function Uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=gk(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function Vk(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;g=u;u=u+16|0;f=g;e=k[a>>2]|0;h=k[a+4>>2]|0;a=b+(h>>1)|0;if(h&1)e=k[(k[a>>2]|0)+e>>2]|0;gd[e&15](f,a,c,d);h=CA(16)|0;k[h>>2]=k[f>>2];k[h+4>>2]=k[f+4>>2];k[h+8>>2]=k[f+8>>2];k[h+12>>2]=k[f+12>>2];u=g;return h|0}function Wk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(!(g&1)){g=f;gd[g&15](a,c,d,e);return}else{g=k[(k[a>>2]|0)+f>>2]|0;gd[g&15](a,c,d,e);return}}function Xk(a){a=a|0;return 400}function Yk(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=k[a>>2]|0;if(b|0){c=a+4|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-24-b|0)>>>0)/24|0)*24|0);EA(b)}EA(a);return}function Zk(a,b){a=a|0;b=b|0;var c=0;c=CA(24)|0;a=k[a>>2]|0;b=k[b>>2]|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=a;k[c+16>>2]=b;k[c+20>>2]=a;$k(c,a);return c|0}function _k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function $k(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+8|0;h=k[a>>2]|0;if((((k[f>>2]|0)-h|0)/24|0)>>>0>=b>>>0)return;i=a+4|0;if(b>>>0>178956970){i=Kb(4)|0;cF(i);Cc(i|0,2032,79)}c=(k[i>>2]|0)-h|0;d=CA(b*24|0)|0;e=d+(((c|0)/24|0)*24|0)|0;g=e+(((c|0)/-24|0)*24|0)|0;if((c|0)>0)nF(g|0,h|0,c|0)|0;k[a>>2]=g;k[i>>2]=e;k[f>>2]=d+(b*24|0);if(!h)return;EA(h);return}function al(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+4|0;d=k[j>>2]|0;c=k[a>>2]|0;e=((d-c|0)/24|0)+1|0;if(e>>>0>178956970){Sy(a);c=k[a>>2]|0;d=k[j>>2]|0}i=a+8|0;h=((k[i>>2]|0)-c|0)/24|0;g=h<<1;g=h>>>0<89478485?(g>>>0>>0?e:g):178956970;e=(d-c|0)/24|0;do if(g)if(g>>>0>178956970){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}else{h=CA(g*24|0)|0;break}else h=0;while(0);f=h+(e*24|0)|0;k[f>>2]=k[b>>2];k[f+4>>2]=k[b+4>>2];k[f+8>>2]=k[b+8>>2];k[f+12>>2]=k[b+12>>2];k[f+16>>2]=k[b+16>>2];k[f+20>>2]=k[b+20>>2];d=d-c|0;e=f+(((d|0)/-24|0)*24|0)|0;if((d|0)>0)nF(e|0,c|0,d|0)|0;k[a>>2]=e;k[j>>2]=f+24;k[i>>2]=h+(g*24|0);if(!c)return;EA(c);return}function bl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(!(g&1)){g=f;gd[g&15](a,c,d,e);return}else{g=k[(k[a>>2]|0)+f>>2]|0;gd[g&15](a,c,d,e);return}}function cl(a){a=a|0;return 440}function dl(a){a=a|0;var b=0;if(!a)return;Pq(k[a+676>>2]|0);Pq(k[a+680>>2]|0);b=k[a+684>>2]|0;if(b|0)FA(b);b=k[a+688>>2]|0;if(b|0)FA(b);el(a+456|0);fl(a+136|0);hl(a+8|0);EA(a);return}function el(a){a=a|0;var b=0;b=k[a+184>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+176>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+152>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+144>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+136>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+128>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+104>>2]|0);Pq(k[a+108>>2]|0);b=k[a+112>>2]|0;if(b|0)FA(b);b=k[a+116>>2]|0;if(b|0)FA(b);Pq(k[a+68>>2]|0);Pq(k[a+72>>2]|0);b=k[a+76>>2]|0;if(b|0)FA(b);b=k[a+80>>2]|0;if(b|0)FA(b);Pq(k[a+32>>2]|0);Pq(k[a+36>>2]|0);b=k[a+40>>2]|0;if(b|0)FA(b);b=k[a+44>>2]|0;if(!b){a=a+8|0;NA(a);return}FA(b);a=a+8|0;NA(a);return}function fl(a){a=a|0;var b=0;gl(a+156|0);b=k[a+148>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+140>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+132>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+36>>2]|0);Pq(k[a+40>>2]|0);b=k[a+44>>2]|0;if(b|0)FA(b);b=k[a+48>>2]|0;if(!b){a=a+12|0;NA(a);return}FA(b);a=a+12|0;NA(a);return}function gl(a){a=a|0;var b=0;b=k[a+72>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+64>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+56>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+40>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+32>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+24>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+16>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+8>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a>>2]|0;if(!b)return;Pq(k[b+-4>>2]|0);return}function hl(a){a=a|0;var b=0;b=k[a+80>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+72>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+64>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+56>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);b=k[a+48>>2]|0;if(b|0)Pq(k[b+-4>>2]|0);Pq(k[a+24>>2]|0);Pq(k[a+28>>2]|0);b=k[a+32>>2]|0;if(b|0)FA(b);b=k[a+36>>2]|0;if(!b)return;FA(b);return}function il(a,b){a=a|0;b=b|0;var c=0;c=CA(704)|0;kl(c,k[a>>2]|0,k[b>>2]|0);return c|0}function jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=u;u=u+16|0;f=d+4|0;e=d;k[f>>2]=b;k[e>>2]=c;c=Yc[a&63](f,e)|0;u=d;return c|0}function kl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+48|0;f=h;ll(a,a);d=a+664|0;i[d>>0]=0;g=a+668|0;k[g>>2]=-1;e=a+672|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;pl(d,0,0);i[f>>0]=0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f+8>>2]=b;k[f+28>>2]=0;b=Oq((c<<2)+4|0)|0;k[f+12>>2]=b;if(!b){h=Kb(4)|0;cF(h);Cc(h|0,2032,79)}k[e>>2]=c;iF(b|0,0,(c<<2)+4|0)|0;ml(d,f)|0;Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);b=k[f+20>>2]|0;if(b|0)FA(b);b=k[f+24>>2]|0;if(b|0)FA(b);k[a+692>>2]=0;iF(k[a+676>>2]|0,0,(k[g>>2]<<2)+4|0)|0;b=k[a+680>>2]|0;if(!b){u=h;return}iF(b|0,0,k[g>>2]<<2|0)|0;u=h;return}function ll(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=b;i[a+8>>0]=0;k[a+12>>2]=0;c=a+20|0;i[c>>0]=0;k[a+24>>2]=-1;d=a+28|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;pl(c,0,0);c=a+104|0;d=a+56|0;e=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));p[c>>3]=1.0;i[a+112>>0]=1;i[a+120>>0]=0;i[a+121>>0]=0;k[a+128>>2]=b;nl(a+136|0);i[a+440>>0]=0;i[a+441>>0]=0;k[a+448>>2]=b;ol(a+456|0);i[a+656>>0]=0;i[a+657>>0]=0;return}function ml(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(i[b>>0]|0){c=a+12|0;d=b+12|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+8|0;e=b+8|0;c=k[d>>2]|0;k[d>>2]=k[e>>2];k[e>>2]=c;e=a+4|0;c=b+4|0;d=k[e>>2]|0;k[e>>2]=k[c>>2];k[c>>2]=d;c=a+16|0;d=b+16|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+20|0;e=b+20|0;c=k[d>>2]|0;k[d>>2]=k[e>>2];k[e>>2]=c;e=a+24|0;c=b+24|0;d=k[e>>2]|0;k[e>>2]=k[c>>2];k[c>>2]=d;c=a+28|0;d=b+28|0;e=k[c>>2]|0;k[c>>2]=k[d>>2];k[d>>2]=e;d=a+32|0;b=b+32|0;e=k[d>>2]|0;k[d>>2]=k[b>>2];k[b>>2]=e;return a|0}if((a|0)==(b|0))return a|0;pl(a,k[b+8>>2]|0,k[b+4>>2]|0);c=a+16|0;d=k[c>>2]|0;if(d|0){Pq(d);k[c>>2]=0}if(k[b+16>>2]|0){rl(a,b);return a|0}c=k[b+12>>2]|0;d=c+(k[a+4>>2]<<2)+4-c|0;if(d|0)nF(k[a+12>>2]|0,c|0,d|0)|0;c=a+20|0;e=b+28|0;ql(c,k[e>>2]|0,0.0);if((k[e>>2]|0)<=0)return a|0;d=a+28|0;e=k[d>>2]|0;if(!e)return a|0;nF(k[c>>2]|0,k[b+20>>2]|0,e<<4|0)|0;c=k[d>>2]|0;if(!c)return a|0;nF(k[a+24>>2]|0,k[b+24>>2]|0,c<<2|0)|0;return a|0}function nl(a){a=a|0;var b=0,c=0,d=0;i[a>>0]=0;b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;KA(b,35588,0);b=a+24|0;i[b>>0]=0;k[a+28>>2]=-1;c=a+32|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;pl(b,0,0);i[a+96>>0]=0;b=a+212|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;i[a+248>>0]=0;b=a+280|0;c=a+100|0;d=c+104|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));p[b>>3]=1.0;k[a+296>>2]=1;k[a+252>>2]=16;k[a+256>>2]=1;k[a+260>>2]=128;k[a+264>>2]=16;k[a+268>>2]=8;k[a+272>>2]=20;return}function ol(a){a=a|0;var b=0,c=0;i[a>>0]=0;i[a+1>>0]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;KA(b,35588,0);b=a+20|0;i[b>>0]=0;k[a+24>>2]=-1;c=a+28|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;pl(b,0,0);b=a+56|0;i[b>>0]=0;k[a+60>>2]=-1;c=a+64|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;pl(b,0,0);b=a+92|0;i[b>>0]=0;k[a+96>>2]=-1;c=a+100|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;pl(b,0,0);b=a+128|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;i[a+168>>0]=1;a=a+176|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;j[a+16>>1]=0;return}function pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a+8>>2]=b;k[a+28>>2]=0;e=a+4|0;d=k[e>>2]|0;do if((d|0)!=(c|0)|(d|0)==0){b=a+12|0;Pq(k[b>>2]|0);d=Oq((c<<2)+4|0)|0;k[b>>2]=d;if(!d){c=Kb(4)|0;cF(c);Cc(c|0,2032,79)}else{k[e>>2]=c;break}}while(0);b=a+16|0;d=k[b>>2]|0;if(!d){a=a+12|0;a=k[a>>2]|0;c=c<<2;c=c+4|0;iF(a|0,0,c|0)|0;return}Pq(d);k[b>>2]=0;c=k[e>>2]|0;a=a+12|0;a=k[a>>2]|0;c=c<<2;c=c+4|0;iF(a|0,0,c|0)|0;return}function ql(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+12|0;if((k[n>>2]|0)>=(b|0)){n=a+8|0;k[n>>2]=b;return}l=~~(+(b|0)*c);m=l+b|0;if((l|0)<0){n=Kb(4)|0;cF(n);Cc(n|0,2032,79)}i=DA(m>>>0>268435455?-1:m<<4)|0;if(m|0)iF(i|0,0,m<<4|0)|0;j=DA(m>>>0>1073741823?-1:m<<2)|0;l=a+8|0;d=k[l>>2]|0;d=(d|0)<(m|0)?d:m;if((d|0)>0){h=k[a>>2]|0;nF(i|0,h|0,d<<4|0)|0;e=a+4|0;f=k[e>>2]|0;nF(j|0,f|0,d<<2|0)|0;d=e;e=f;g=h}else{h=k[a>>2]|0;d=a+4|0;f=k[d>>2]|0;e=f;g=h}k[a>>2]=i;k[d>>2]=j;k[n>>2]=m;if(e|0)FA(f);if(!g){n=l;k[n>>2]=b;return}FA(h);n=l;k[n>>2]=b;return}function rl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+64|0;C=D+16|0;t=D;e=b+4|0;B=k[e>>2]|0;if(i[b>>0]|0){d=b+8|0;pl(a,k[d>>2]|0,B);t=a+28|0;k[t>>2]=0;v=a+12|0;w=a+4|0;iF(k[v>>2]|0,0,(k[w>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[w>>2]<<2|0)|0;A=k[d>>2]|0;z=k[e>>2]|0;sl(a,((A|0)<(z|0)?z:A)<<1);a:do if((B|0)>0){q=b+20|0;r=b+24|0;s=b+12|0;o=b+16|0;p=a+20|0;n=a+24|0;l=0;b:while(1){f=k[v>>2]|0;e=k[f+(l<<2)>>2]|0;if((e|0)!=(k[t>>2]|0)){c=15;break}m=l;l=l+1|0;c=f+(l<<2)|0;if(k[c>>2]|0){c=17;break}k[c>>2]=e;h=k[q>>2]|0;j=k[r>>2]|0;c=k[s>>2]|0;b=k[c+(m<<2)>>2]|0;d=k[o>>2]|0;if(!d)g=k[c+(l<<2)>>2]|0;else g=(k[d+(m<<2)>>2]|0)+b|0;c:do if((b|0)<(g|0)){A=h+(b<<4)|0;k[C>>2]=k[A>>2];k[C+4>>2]=k[A+4>>2];k[C+8>>2]=k[A+8>>2];k[C+12>>2]=k[A+12>>2];if((e|0)!=(k[t>>2]|0)){c=23;break b}while(1){c=k[j+(b<<2)>>2]|0;d=f+(l<<2)|0;if((e|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(e+-1<<2)>>2]|0)>=(c|0):0){c=26;break b}k[d>>2]=e+1;A=k[t>>2]|0;ql(p,A+1|0,1.0);z=(k[p>>2]|0)+(A<<4)|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[(k[n>>2]|0)+(A<<2)>>2]=c;A=(k[p>>2]|0)+(e<<4)|0;k[A>>2]=k[C>>2];k[A+4>>2]=k[C+4>>2];k[A+8>>2]=k[C+8>>2];k[A+12>>2]=k[C+12>>2];b=b+1|0;if((b|0)>=(g|0))break c;f=k[v>>2]|0;e=k[f+(l<<2)>>2]|0;A=h+(b<<4)|0;k[C>>2]=k[A>>2];k[C+4>>2]=k[A+4>>2];k[C+8>>2]=k[A+8>>2];k[C+12>>2]=k[A+12>>2];if((e|0)!=(k[t>>2]|0)){c=23;break b}}}while(0);if((l|0)>=(B|0))break a}if((c|0)==15)Oa(16047,15958,414,16152);else if((c|0)==17)Oa(16161,15958,415,16152);else if((c|0)==23)Oa(16249,15958,392,16348);else if((c|0)==26)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=D;return}f=k[t>>2]|0;e=k[w>>2]|0;if((e|0)<=-1){u=D;return}b=k[v>>2]|0;c=e;while(1){if(k[b+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0)){u=D;return}do{c=c+1|0;k[b+(c<<2)>>2]=f}while((c|0)<(k[w>>2]|0));u=D;return}c=b+8|0;v=k[c>>2]|0;i[C>>0]=0;y=C+4|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[y+16>>2]=0;k[y+20>>2]=0;k[y+24>>2]=0;k[y+28>>2]=0;k[C+8>>2]=v;v=C+28|0;k[v>>2]=0;d=Oq((B<<2)+4|0)|0;k[C+12>>2]=d;if(!d){D=Kb(4)|0;cF(D);Cc(D|0,2032,79)}k[y>>2]=B;z=C+16|0;s=k[c>>2]|0;r=k[e>>2]|0;w=C+12|0;iF(d|0,0,(B<<2)+4|0)|0;sl(C,((s|0)<(r|0)?r:s)<<1);d:do if((B|0)>0){q=b+20|0;r=b+24|0;s=b+12|0;o=b+16|0;p=C+20|0;n=C+24|0;l=0;e:while(1){f=k[w>>2]|0;e=k[f+(l<<2)>>2]|0;if((e|0)!=(k[v>>2]|0)){c=42;break}m=l;l=l+1|0;c=f+(l<<2)|0;if(k[c>>2]|0){c=44;break}k[c>>2]=e;h=k[q>>2]|0;j=k[r>>2]|0;c=k[s>>2]|0;b=k[c+(m<<2)>>2]|0;d=k[o>>2]|0;if(!d)g=k[c+(l<<2)>>2]|0;else g=(k[d+(m<<2)>>2]|0)+b|0;f:do if((b|0)<(g|0)){d=h+(b<<4)|0;k[t>>2]=k[d>>2];k[t+4>>2]=k[d+4>>2];k[t+8>>2]=k[d+8>>2];k[t+12>>2]=k[d+12>>2];if((e|0)!=(k[v>>2]|0)){c=50;break e}while(1){c=k[j+(b<<2)>>2]|0;d=f+(l<<2)|0;if((e|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(e+-1<<2)>>2]|0)>=(c|0):0){c=53;break e}k[d>>2]=e+1;f=k[v>>2]|0;ql(p,f+1|0,1.0);d=(k[p>>2]|0)+(f<<4)|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[(k[n>>2]|0)+(f<<2)>>2]=c;f=(k[p>>2]|0)+(e<<4)|0;k[f>>2]=k[t>>2];k[f+4>>2]=k[t+4>>2];k[f+8>>2]=k[t+8>>2];k[f+12>>2]=k[t+12>>2];b=b+1|0;if((b|0)>=(g|0))break f;f=k[w>>2]|0;e=k[f+(l<<2)>>2]|0;d=h+(b<<4)|0;k[t>>2]=k[d>>2];k[t+4>>2]=k[d+4>>2];k[t+8>>2]=k[d+8>>2];k[t+12>>2]=k[d+12>>2];if((e|0)!=(k[v>>2]|0)){c=50;break e}}}while(0);if((l|0)>=(B|0))break d}if((c|0)==42)Oa(16047,15958,414,16152);else if((c|0)==44)Oa(16161,15958,415,16152);else if((c|0)==50)Oa(16249,15958,392,16348);else if((c|0)==53)Oa(16371,15958,393,16348)}while(0);if((k[C+16>>2]|0)==0?(A=k[v>>2]|0,x=k[y>>2]|0,(x|0)>-1):0){e=k[w>>2]|0;c=x;while(1){if(k[e+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)<(x|0))do{c=c+1|0;k[e+(c<<2)>>2]=A}while((c|0)<(k[y>>2]|0))}i[C>>0]=1;ml(a,C)|0;Pq(k[w>>2]|0);Pq(k[z>>2]|0);c=k[C+20>>2]|0;if(c|0)FA(c);c=k[C+24>>2]|0;if(c|0)FA(c);u=D;return}function sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(k[a+16>>2]|0)Oa(15880,15958,264,16039);j=a+20|0;c=k[a+28>>2]|0;h=c+b|0;i=a+32|0;if((h|0)<=(k[i>>2]|0))return;f=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(f|0,0,h<<4|0)|0;g=DA(h>>>0>1073741823?-1:h<<2)|0;b=(c|0)<(h|0)?c:h;if((b|0)>0){e=k[j>>2]|0;nF(f|0,e|0,b<<4|0)|0;c=a+24|0;a=k[c>>2]|0;nF(g|0,a|0,b<<2|0)|0;b=c;c=a;d=e}else{e=k[j>>2]|0;b=a+24|0;a=k[b>>2]|0;c=a;d=e}k[j>>2]=f;k[b>>2]=g;k[i>>2]=h;if(c|0)FA(a);if(!d)return;FA(e);return}function tl(a){a=a|0;var b=0;b=CA(704)|0;vl(b,k[a>>2]|0);return b|0}function ul(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;k[d>>2]=b;b=Pc[a&127](d)|0;u=c;return b|0}function vl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=u;u=u+16|0;f=c+4|0;e=c;ll(a,a);d=a+664|0;h=k[b+12>>2]|0;g=k[b+16>>2]|0;i[d>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;pl(d,h,g);k[f>>2]=k[b>>2];k[e>>2]=k[b+4>>2];wl(f,e,d,c+8|0);u=c;return}function wl(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;t=u;u=u+48|0;s=t+8|0;q=t;r=t+44|0;j=c+8|0;f=k[j>>2]|0;l=c+4|0;e=k[l>>2]|0;i[s>>0]=0;d=s+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[s+8>>2]=e;k[s+28>>2]=0;e=Oq((f<<2)+4|0)|0;k[s+12>>2]=e;if(!e){t=Kb(4)|0;cF(t);Cc(t|0,2032,79)}k[d>>2]=f;o=s+16|0;m=k[a>>2]|0;n=k[b>>2]|0;p=s+12|0;iF(e|0,0,(f<<2)+4|0)|0;if((m|0)!=(n|0)){k[q>>2]=0;h=q+4|0;k[h>>2]=0;Ef(q,f);d=k[h>>2]|0;if((d|0)<=-1)Oa(11919,12068,74,12145);if(d|0)iF(k[q>>2]|0,0,d<<2|0)|0;d=k[a>>2]|0;f=k[b>>2]|0;a:do if((d|0)!=(f|0)){g=k[q>>2]|0;while(1){e=k[d>>2]|0;if(!((e|0)>-1?(e|0)<(k[j>>2]|0):0)){d=13;break}n=k[d+4>>2]|0;if(!((n|0)>-1?(n|0)<(k[l>>2]|0):0)){d=13;break}if((k[h>>2]|0)<=(e|0)){d=15;break}n=g+(e<<2)|0;k[n>>2]=(k[n>>2]|0)+1;d=d+24|0;if((d|0)==(f|0))break a}if((d|0)==13)Oa(16510,15958,934,16587);else if((d|0)==15)Oa(16605,15693,425,29764)}while(0);zl(s,q);d=k[a>>2]|0;b:do if((d|0)!=(k[b>>2]|0)){a=s+16|0;m=s+24|0;n=s+20|0;while(1){h=d+8|0;j=k[d>>2]|0;l=k[d+4>>2]|0;e=k[a>>2]|0;if(!e){d=20;break}e=e+(j<<2)|0;f=k[e>>2]|0;v=k[p>>2]|0;g=k[v+(j<<2)>>2]|0;if((f|0)>((k[v+(j+1<<2)>>2]|0)-g|0)){d=22;break}k[e>>2]=f+1;v=g+f|0;k[(k[m>>2]|0)+(v<<2)>>2]=l;v=(k[n>>2]|0)+(v<<4)|0;k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];k[v+8>>2]=k[h+8>>2];k[v+12>>2]=k[h+12>>2];d=d+24|0;if((d|0)==(k[b>>2]|0))break b}if((d|0)==20)Oa(16634,15958,891,16650);else if((d|0)==22)Oa(16673,15958,892,16650)}while(0);xl(s,r);d=k[q>>2]|0;if(d|0)Pq(k[d+-4>>2]|0)}yl(c,s)|0;Pq(k[p>>2]|0);Pq(k[o>>2]|0);d=k[s+20>>2]|0;if(d|0)FA(d);d=k[s+24>>2]|0;if(!d){u=t;return}FA(d);u=t;return}function xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0.0;y=u;u=u+16|0;s=y;if(!(k[a+16>>2]|0))Oa(16634,15958,1019,16743);b=k[a+8>>2]|0;k[s>>2]=0;r=s+4|0;k[r>>2]=0;Ef(s,b);b=k[r>>2]|0;if((b|0)<=-1)Oa(11919,12068,74,12145);if(b|0)iF(k[s>>2]|0,-1,b<<2|0)|0;n=a+4|0;b=k[n>>2]|0;o=a+16|0;d=k[o>>2]|0;q=a+12|0;c=k[q>>2]|0;a:do if((b|0)>0){l=a+24|0;m=a+20|0;i=0;j=0;b:while(1){b=k[c+(j<<2)>>2]|0;g=k[d+(j<<2)>>2]|0;h=g+b|0;if((g|0)>0){g=b;b=i;do{c=k[(k[l>>2]|0)+(g<<2)>>2]|0;if(!((c|0)>-1?(k[r>>2]|0)>(c|0):0)){b=14;break b}d=(k[s>>2]|0)+(c<<2)|0;e=k[d>>2]|0;f=k[m>>2]|0;if((e|0)<(i|0)){e=f+(g<<4)|0;f=f+(b<<4)|0;k[f>>2]=k[e>>2];k[f+4>>2]=k[e+4>>2];k[f+8>>2]=k[e+8>>2];k[f+12>>2]=k[e+12>>2];f=k[l>>2]|0;k[f+(b<<2)>>2]=k[f+(g<<2)>>2];if((k[r>>2]|0)<=(c|0)){b=18;break b}k[d>>2]=b;b=b+1|0}else{d=f+(e<<4)|0;e=f+(e<<4)+8|0;z=+p[e>>3]+ +p[f+(g<<4)+8>>3];p[d>>3]=+p[d>>3]+ +p[f+(g<<4)>>3];p[e>>3]=z}g=g+1|0}while((g|0)<(h|0));c=k[q>>2]|0;e=k[o>>2]|0}else{b=i;e=d}k[c+(j<<2)>>2]=i;j=j+1|0;d=k[n>>2]|0;if((j|0)>=(d|0)){t=b;v=c;w=e;x=d;break a}else{i=b;d=e}}if((b|0)==14)Oa(16605,15693,425,29764);else if((b|0)==18)Oa(16605,15693,425,29764)}else{t=0;v=c;w=d;x=b}while(0);k[v+(x<<2)>>2]=t;Pq(w);k[o>>2]=0;ql(a+20|0,k[(k[q>>2]|0)+(k[n>>2]<<2)>>2]|0,0.0);b=k[s>>2]|0;if(!b){u=y;return}Pq(k[b+-4>>2]|0);u=y;return}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=u;u=u+48|0;C=E+8|0;t=E;v=b+4|0;w=k[v>>2]|0;c=k[b+8>>2]|0;i[C>>0]=0;z=C+4|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;A=C+8|0;k[A>>2]=w;w=C+28|0;k[w>>2]=0;l=Oq((c<<2)+4|0)|0;k[C+12>>2]=l;if(!l){E=Kb(4)|0;cF(E);Cc(E|0,2032,79)}k[z>>2]=c;B=C+16|0;y=C+12|0;iF(l|0,0,(c<<2)+4|0)|0;if((c|0)<=-1)Oa(14697,13988,163,14058);if(c|0)iF(l|0,0,c<<2|0)|0;c=k[v>>2]|0;if((c|0)>0){h=k[b+24>>2]|0;j=k[b+12>>2]|0;g=k[b+16>>2]|0;if(!g){f=0;do{d=k[j+(f<<2)>>2]|0;f=f+1|0;e=k[j+(f<<2)>>2]|0;if((d|0)<(e|0)){c=d;do{s=l+(k[h+(c<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;c=c+1|0}while((c|0)!=(e|0));c=k[v>>2]|0}}while((f|0)<(c|0))}else{f=0;do{d=k[j+(f<<2)>>2]|0;s=k[g+(f<<2)>>2]|0;e=s+d|0;if((s|0)>0){c=d;do{s=l+(k[h+(c<<2)>>2]<<2)|0;k[s>>2]=(k[s>>2]|0)+1;c=c+1|0}while((c|0)<(e|0));c=k[v>>2]|0}f=f+1|0}while((f|0)<(c|0))}}c=k[z>>2]|0;k[t>>2]=0;s=t+4|0;k[s>>2]=0;Ef(t,c);c=k[z>>2]|0;g=k[y>>2]|0;a:do if((c|0)>0){f=k[t>>2]|0;e=0;c=0;while(1){r=g+(e<<2)|0;d=k[r>>2]|0;k[r>>2]=c;if((k[s>>2]|0)<=(e|0))break;k[f+(e<<2)>>2]=c;c=d+c|0;e=e+1|0;d=k[z>>2]|0;if((e|0)>=(d|0)){n=c;m=d;break a}}Oa(16605,15693,408,29907)}else{n=0;m=c}while(0);k[g+(m<<2)>>2]=n;r=C+20|0;ql(r,n,0.0);c=k[v>>2]|0;b:do if((c|0)>0){o=b+20|0;p=b+24|0;q=b+12|0;n=b+16|0;l=k[t>>2]|0;m=C+24|0;j=0;c:while(1){g=k[o>>2]|0;h=k[p>>2]|0;d=k[q>>2]|0;f=k[d+(j<<2)>>2]|0;e=k[n>>2]|0;if(!e)e=k[d+(j+1<<2)>>2]|0;else e=(k[e+(j<<2)>>2]|0)+f|0;if((f|0)<(e|0)){c=f;do{d=k[h+(c<<2)>>2]|0;if(!((d|0)>-1?(k[s>>2]|0)>(d|0):0))break c;b=l+(d<<2)|0;t=k[b>>2]|0;k[b>>2]=t+1;k[(k[m>>2]|0)+(t<<2)>>2]=j;b=g+(c<<4)|0;t=(k[r>>2]|0)+(t<<4)|0;k[t>>2]=k[b>>2];k[t+4>>2]=k[b+4>>2];k[t+8>>2]=k[b+8>>2];k[t+12>>2]=k[b+12>>2];c=c+1|0}while((c|0)<(e|0));c=k[v>>2]|0}j=j+1|0;if((j|0)>=(c|0)){D=m;x=l;break b}}Oa(16605,15693,408,29907)}else{D=C+24|0;x=k[t>>2]|0}while(0);t=a+12|0;c=k[t>>2]|0;k[t>>2]=k[y>>2];k[y>>2]=c;t=a+8|0;v=k[t>>2]|0;k[t>>2]=k[A>>2];k[A>>2]=v;v=a+4|0;A=k[v>>2]|0;k[v>>2]=k[z>>2];k[z>>2]=A;A=a+16|0;z=k[A>>2]|0;k[A>>2]=k[B>>2];k[B>>2]=z;z=a+20|0;A=k[z>>2]|0;k[z>>2]=k[r>>2];k[r>>2]=A;A=a+24|0;z=k[A>>2]|0;k[A>>2]=k[D>>2];k[D>>2]=z;z=a+28|0;A=k[z>>2]|0;k[z>>2]=k[w>>2];k[w>>2]=A;w=a+32|0;A=C+32|0;z=k[w>>2]|0;k[w>>2]=k[A>>2];k[A>>2]=z;if(x){Pq(k[x+-4>>2]|0);c=k[y>>2]|0}Pq(c);Pq(k[B>>2]|0);c=k[C+20>>2]|0;if(c|0)FA(c);c=k[D>>2]|0;if(!c){u=E;return a|0}FA(c);u=E;return a|0}function zl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=k[a+16>>2]|0;s=a+4|0;n=k[s>>2]|0;c=n<<2;if(l|0){p=Oq(c+4|0)|0;q=p;if(!p){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}a:do if((n|0)>0){i=k[a+12>>2]|0;j=k[b>>2]|0;h=k[b+4>>2]|0;g=0;c=0;while(1){k[p+(g<<2)>>2]=c;d=g;g=g+1|0;e=k[l+(d<<2)>>2]|0;f=(k[i+(g<<2)>>2]|0)-(k[i+(d<<2)>>2]|0)-e|0;if((h|0)<=(d|0))break;b=k[j+(d<<2)>>2]|0;c=e+c+((b|0)<(f|0)?f:b)|0;if((g|0)>=(n|0)){m=c;break a}}Oa(16605,15693,162,29907)}else m=0;while(0);k[p+(n<<2)>>2]=m;o=a+20|0;ql(o,m,0.0);c=k[s>>2]|0;m=a+12|0;if((c|0)>0){n=a+16|0;l=a+24|0;do{h=c;c=c+-1|0;j=p+(c<<2)|0;f=k[j>>2]|0;d=k[m>>2]|0;e=k[d+(c<<2)>>2]|0;b:do if((f|0)>(e|0)?(r=k[(k[n>>2]|0)+(c<<2)>>2]|0,(r|0)>0):0){i=r;g=e;while(1){e=i+-1|0;s=k[l>>2]|0;k[s+(f+e<<2)>>2]=k[s+(g+e<<2)>>2];s=k[o>>2]|0;b=s+((k[d+(c<<2)>>2]|0)+e<<4)|0;s=s+((k[j>>2]|0)+e<<4)|0;k[s>>2]=k[b>>2];k[s+4>>2]=k[b+4>>2];k[s+8>>2]=k[b+8>>2];k[s+12>>2]=k[b+12>>2];if((i|0)<=1)break b;g=k[m>>2]|0;i=e;d=g;g=k[g+(c<<2)>>2]|0;f=k[j>>2]|0}}while(0)}while((h|0)>1)}s=k[m>>2]|0;k[m>>2]=q;Pq(s);return}o=Oq(c)|0;p=a+16|0;k[p>>2]=o;if(!o){s=Kb(4)|0;cF(s);Cc(s|0,2032,79)}c:do if((n|0)>0){f=b+4|0;g=k[b>>2]|0;h=a+12|0;d=0;c=0;e=0;while(1){k[o+(d<<2)>>2]=e;if((k[f>>2]|0)<=(d|0))break;r=k[g+(d<<2)>>2]|0;n=k[h>>2]|0;q=d;d=d+1|0;e=r+e+(k[n+(d<<2)>>2]|0)-(k[n+(q<<2)>>2]|0)|0;c=r+c|0;if((d|0)>=(k[s>>2]|0)){i=c;break c}}Oa(16605,15693,162,29907)}else i=0;while(0);n=a+20|0;c=k[a+28>>2]|0;h=c+i|0;i=a+32|0;if((h|0)>(k[i>>2]|0)){j=DA(h>>>0>268435455?-1:h<<4)|0;if(h|0)iF(j|0,0,h<<4|0)|0;l=DA(h>>>0>1073741823?-1:h<<2)|0;c=(c|0)<(h|0)?c:h;if((c|0)>0){g=k[n>>2]|0;nF(j|0,g|0,c<<4|0)|0;d=a+24|0;e=k[d>>2]|0;nF(l|0,e|0,c<<2|0)|0;c=d;d=e;f=g}else{g=k[n>>2]|0;c=a+24|0;e=k[c>>2]|0;d=e;f=g}k[n>>2]=j;k[c>>2]=l;k[i>>2]=h;if(d|0)FA(e);if(f|0)FA(g)}m=a+12|0;c=k[s>>2]|0;e=k[m>>2]|0;if((c|0)>0){l=a+24|0;d=k[e+(c<<2)>>2]|0;j=c;do{i=j;j=j+-1|0;f=e+(j<<2)|0;c=k[f>>2]|0;h=d-c|0;g=o+(j<<2)|0;if((h|0)>0){d=h;do{a=d;d=d+-1|0;f=k[l>>2]|0;k[f+((k[g>>2]|0)+d<<2)>>2]=k[f+(c+d<<2)>>2];c=k[n>>2]|0;f=c+((k[e+(j<<2)>>2]|0)+d<<4)|0;e=c+((k[g>>2]|0)+d<<4)|0;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];k[e+8>>2]=k[f+8>>2];k[e+12>>2]=k[f+12>>2];e=k[m>>2]|0;f=e+(j<<2)|0;c=k[f>>2]|0}while((a|0)>1);d=c;c=f}else{d=c;c=f}k[c>>2]=k[g>>2];c=k[p>>2]|0;k[c+(j<<2)>>2]=h}while((i|0)>1);f=k[s>>2]|0}else{f=c;c=k[p>>2]|0}d=f+-1|0;c=(k[c+(d<<2)>>2]|0)+(k[e+(d<<2)>>2]|0)|0;if((f|0)<=0)Oa(16605,15693,162,29907);if((k[b+4>>2]|0)<(f|0))Oa(16605,15693,162,29907);k[e+(f<<2)>>2]=c+(k[(k[b>>2]|0)+(d<<2)>>2]|0);ql(n,k[e+(k[s>>2]<<2)>>2]|0,0.0);return}function Al(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+32|0;f=i+8|0;g=i+4|0;h=i;e=a+8|0;b=k[e>>2]|0;if((b|0)!=(k[a+4>>2]|0))Oa(16762,15958,746,16810);c=a+20|0;ql(c,b,0.0);b=k[e>>2]|0;k[f>>2]=k[a+24>>2];k[f+4>>2]=b;if((b|0)<=-1)Oa(14697,13988,163,14058);k[g>>2]=0;k[h>>2]=b+-1;Rg(f,b,g,h)|0;c=k[c>>2]|0;d=k[e>>2]|0;if((d|0)<=-1)Oa(14697,13988,163,14058);if(!d)c=0;else{b=0;do{p[c+(b<<4)>>3]=1.0;p[c+(b<<4)+8>>3]=0.0;b=b+1|0}while((b|0)!=(d|0));c=k[e>>2]|0}b=c+1|0;k[f>>2]=k[a+12>>2];k[f+4>>2]=b;if((c|0)>-2){k[g>>2]=0;k[h>>2]=c;Rg(f,b,g,h)|0;h=a+16|0;Pq(k[h>>2]|0);k[h>>2]=0;u=i;return}else Oa(14697,13988,163,14058)}function Bl(a,b){a=a|0;b=b|0;var c=0;ll(a,a);c=a+664|0;i[c>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;ml(c,b)|0;return}function Cl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+704|0;d=e;cd[a&63](d,b,c);b=CA(704)|0;Dl(b,d);Pq(k[d+676>>2]|0);Pq(k[d+680>>2]|0);a=k[d+684>>2]|0;if(a|0)FA(a);a=k[d+688>>2]|0;if(a|0)FA(a);el(d+456|0);fl(d+136|0);hl(d+8|0);u=e;return b|0}function Dl(a,b){a=a|0;b=b|0;var c=0;ll(a,a);c=a+664|0;i[c>>0]=0;a=a+668|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;ml(c,b+664|0)|0;return}function El(a,b){a=a|0;b=b|0;var c=0,d=0;d=u;u=u+704|0;c=d;Nc[a&63](c,b);b=CA(704)|0;Dl(b,c);Pq(k[c+676>>2]|0);Pq(k[c+680>>2]|0);a=k[c+684>>2]|0;if(a|0)FA(a);a=k[c+688>>2]|0;if(a|0)FA(a);el(c+456|0);fl(c+136|0);hl(c+8|0);u=d;return b|0}function Fl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=u;u=u+48|0;C=E+8|0;t=E;s=k[b+4>>2]|0;v=s+4|0;x=k[v>>2]|0;b=k[s+8>>2]|0;i[C>>0]=0;z=C+4|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;w=C+8|0;k[w>>2]=x;x=C+28|0;k[x>>2]=0;j=Oq((b<<2)+4|0)|0;k[C+12>>2]=j;if(!j){E=Kb(4)|0;cF(E);Cc(E|0,2032,79)}k[z>>2]=b;B=C+16|0;y=C+12|0;iF(j|0,0,(b<<2)+4|0)|0;if((b|0)<=-1)Oa(14697,13988,163,14058);if(b|0)iF(j|0,0,b<<2|0)|0;b=k[v>>2]|0;if((b|0)>0){g=k[s+24>>2]|0;h=k[s+12>>2]|0;f=k[s+16>>2]|0;if(!f){e=0;do{c=k[h+(e<<2)>>2]|0;e=e+1|0;d=k[h+(e<<2)>>2]|0;if((c|0)<(d|0)){b=c;do{r=j+(k[g+(b<<2)>>2]<<2)|0;k[r>>2]=(k[r>>2]|0)+1;b=b+1|0}while((b|0)!=(d|0));b=k[v>>2]|0}}while((e|0)<(b|0))}else{e=0;do{c=k[h+(e<<2)>>2]|0;r=k[f+(e<<2)>>2]|0;d=r+c|0;if((r|0)>0){b=c;do{r=j+(k[g+(b<<2)>>2]<<2)|0;k[r>>2]=(k[r>>2]|0)+1;b=b+1|0}while((b|0)<(d|0));b=k[v>>2]|0}e=e+1|0}while((e|0)<(b|0))}}b=k[z>>2]|0;k[t>>2]=0;r=t+4|0;k[r>>2]=0;Ef(t,b);b=k[z>>2]|0;f=k[y>>2]|0;a:do if((b|0)>0){e=k[t>>2]|0;d=0;b=0;while(1){q=f+(d<<2)|0;c=k[q>>2]|0;k[q>>2]=b;if((k[r>>2]|0)<=(d|0))break;k[e+(d<<2)>>2]=b;b=c+b|0;d=d+1|0;c=k[z>>2]|0;if((d|0)>=(c|0)){m=b;l=c;break a}}Oa(16605,15693,408,29907)}else{m=0;l=b}while(0);k[f+(l<<2)>>2]=m;q=C+20|0;ql(q,m,0.0);b=k[v>>2]|0;b:do if((b|0)>0){n=s+20|0;o=s+24|0;p=s+12|0;m=s+16|0;j=k[t>>2]|0;l=C+24|0;h=0;c:while(1){f=k[n>>2]|0;g=k[o>>2]|0;c=k[p>>2]|0;e=k[c+(h<<2)>>2]|0;d=k[m>>2]|0;if(!d)d=k[c+(h+1<<2)>>2]|0;else d=(k[d+(h<<2)>>2]|0)+e|0;if((e|0)<(d|0)){b=e;do{c=k[g+(b<<2)>>2]|0;if(!((c|0)>-1?(k[r>>2]|0)>(c|0):0))break c;s=j+(c<<2)|0;t=k[s>>2]|0;k[s>>2]=t+1;k[(k[l>>2]|0)+(t<<2)>>2]=h;s=f+(b<<4)|0;t=(k[q>>2]|0)+(t<<4)|0;k[t>>2]=k[s>>2];k[t+4>>2]=k[s+4>>2];k[t+8>>2]=k[s+8>>2];k[t+12>>2]=k[s+12>>2];b=b+1|0}while((b|0)<(d|0));b=k[v>>2]|0}h=h+1|0;if((h|0)>=(b|0)){D=l;A=j;break b}}Oa(16605,15693,408,29907)}else{D=C+24|0;A=k[t>>2]|0}while(0);t=a+12|0;b=k[t>>2]|0;k[t>>2]=k[y>>2];k[y>>2]=b;t=a+8|0;v=k[t>>2]|0;k[t>>2]=k[w>>2];k[w>>2]=v;v=a+4|0;w=k[v>>2]|0;k[v>>2]=k[z>>2];k[z>>2]=w;w=a+16|0;z=k[w>>2]|0;k[w>>2]=k[B>>2];k[B>>2]=z;z=a+20|0;w=k[z>>2]|0;k[z>>2]=k[q>>2];k[q>>2]=w;w=a+24|0;z=k[w>>2]|0;k[w>>2]=k[D>>2];k[D>>2]=z;z=a+28|0;w=k[z>>2]|0;k[z>>2]=k[x>>2];k[x>>2]=w;w=a+32|0;z=C+32|0;x=k[w>>2]|0;k[w>>2]=k[z>>2];k[z>>2]=x;if(A){Pq(k[A+-4>>2]|0);b=k[y>>2]|0}Pq(b);Pq(k[B>>2]|0);b=k[C+20>>2]|0;if(b|0)FA(b);b=k[D>>2]|0;if(!b){u=E;return a|0}FA(b);u=E;return a|0}function Gl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+704|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=CA(704)|0;Dl(a,d);Pq(k[d+676>>2]|0);Pq(k[d+680>>2]|0);c=k[d+684>>2]|0;if(c|0)FA(c);c=k[d+688>>2]|0;if(c|0)FA(c);el(d+456|0);fl(d+136|0);hl(d+8|0);u=e;return a|0}function Hl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+48|0;D=F;c=b+4|0;d=k[c>>2]|0;E=k[d+4>>2]|0;if(i[b>>0]|0){pl(a,k[d+8>>2]|0,E);x=a+28|0;k[x>>2]=0;y=a+12|0;z=a+4|0;iF(k[y>>2]|0,0,(k[z>>2]<<2)+4|0)|0;b=k[a+16>>2]|0;if(b|0)iF(b|0,0,k[z>>2]<<2|0)|0;C=k[c>>2]|0;D=k[C+8>>2]|0;C=k[C+4>>2]|0;sl(a,((D|0)<(C|0)?C:D)<<1);a:do if((E|0)>0){t=d+20|0;v=d+24|0;w=d+12|0;r=d+16|0;s=a+20|0;q=a+24|0;n=0;b:while(1){d=k[y>>2]|0;f=k[d+(n<<2)>>2]|0;if((f|0)!=(k[x>>2]|0)){b=15;break}o=n;n=n+1|0;b=d+(n<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=f;l=k[t>>2]|0;m=k[v>>2]|0;b=k[w>>2]|0;e=k[b+(o<<2)>>2]|0;c=k[r>>2]|0;if(!c)j=k[b+(n<<2)>>2]|0;else j=(k[c+(o<<2)>>2]|0)+e|0;c:do if((e|0)<(j|0)){if((f|0)!=(k[x>>2]|0)){b=23;break b}while(1){g=+p[l+(e<<4)>>3];h=-+p[l+(e<<4)+8>>3];b=k[m+(e<<2)>>2]|0;c=d+(n<<2)|0;if((f|0)!=(k[d+(o<<2)>>2]|0)?(k[(k[q>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=26;break b}k[c>>2]=f+1;D=k[x>>2]|0;ql(s,D+1|0,1.0);C=(k[s>>2]|0)+(D<<4)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[(k[q>>2]|0)+(D<<2)>>2]=b;D=k[s>>2]|0;p[D+(f<<4)>>3]=g;p[D+(f<<4)+8>>3]=h;e=e+1|0;if((e|0)>=(j|0))break c;d=k[y>>2]|0;f=k[d+(n<<2)>>2]|0;if((f|0)!=(k[x>>2]|0)){b=23;break b}}}while(0);if((n|0)>=(E|0))break a}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=F;return}f=k[x>>2]|0;d=k[z>>2]|0;if((d|0)<=-1){u=F;return}e=k[y>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=F;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[z>>2]|0));u=F;return}x=k[d+8>>2]|0;i[D>>0]=0;z=D+4|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[z+16>>2]=0;k[z+20>>2]=0;k[z+24>>2]=0;k[z+28>>2]=0;k[D+8>>2]=x;x=D+28|0;k[x>>2]=0;b=Oq((E<<2)+4|0)|0;k[D+12>>2]=b;if(!b){F=Kb(4)|0;cF(F);Cc(F|0,2032,79)}k[z>>2]=E;A=D+16|0;v=k[c>>2]|0;y=D+12|0;iF(b|0,0,(E<<2)+4|0)|0;w=k[v+8>>2]|0;v=k[v+4>>2]|0;sl(D,((w|0)<(v|0)?v:w)<<1);d:do if((E|0)>0){t=d+20|0;v=d+24|0;w=d+12|0;r=d+16|0;s=D+20|0;q=D+24|0;n=0;e:while(1){d=k[y>>2]|0;f=k[d+(n<<2)>>2]|0;if((f|0)!=(k[x>>2]|0)){b=42;break}o=n;n=n+1|0;b=d+(n<<2)|0;if(k[b>>2]|0){b=44;break}k[b>>2]=f;l=k[t>>2]|0;m=k[v>>2]|0;b=k[w>>2]|0;e=k[b+(o<<2)>>2]|0;c=k[r>>2]|0;if(!c)j=k[b+(n<<2)>>2]|0;else j=(k[c+(o<<2)>>2]|0)+e|0;f:do if((e|0)<(j|0)){if((f|0)!=(k[x>>2]|0)){b=50;break e}while(1){g=+p[l+(e<<4)>>3];h=-+p[l+(e<<4)+8>>3];b=k[m+(e<<2)>>2]|0;c=d+(n<<2)|0;if((f|0)!=(k[d+(o<<2)>>2]|0)?(k[(k[q>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=53;break e}k[c>>2]=f+1;d=k[x>>2]|0;ql(s,d+1|0,1.0);c=(k[s>>2]|0)+(d<<4)|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[(k[q>>2]|0)+(d<<2)>>2]=b;d=k[s>>2]|0;p[d+(f<<4)>>3]=g;p[d+(f<<4)+8>>3]=h;e=e+1|0;if((e|0)>=(j|0))break f;d=k[y>>2]|0;f=k[d+(n<<2)>>2]|0;if((f|0)!=(k[x>>2]|0)){b=50;break e}}}while(0);if((n|0)>=(E|0))break d}if((b|0)==42)Oa(16047,15958,414,16152);else if((b|0)==44)Oa(16161,15958,415,16152);else if((b|0)==50)Oa(16249,15958,392,16348);else if((b|0)==53)Oa(16371,15958,393,16348)}while(0);if((k[D+16>>2]|0)==0?(C=k[x>>2]|0,B=k[z>>2]|0,(B|0)>-1):0){d=k[y>>2]|0;b=B;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(B|0))do{b=b+1|0;k[d+(b<<2)>>2]=C}while((b|0)<(k[z>>2]|0))}i[D>>0]=1;ml(a,D)|0;Pq(k[y>>2]|0);Pq(k[A>>2]|0);b=k[D+20>>2]|0;if(b|0)FA(b);b=k[D+24>>2]|0;if(b|0)FA(b);u=F;return}function Il(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function Jl(a){a=a|0;var b=0.0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0;a=k[a+4>>2]|0;if((k[a+8>>2]|0)<=0)Oa(16822,16887,19,11478);h=k[a+4>>2]|0;if((h|0)<=0)Oa(16822,16887,19,11478);f=k[a+20>>2]|0;g=k[a+12>>2]|0;e=k[a+16>>2]|0;if(e|0){d=0;b=0.0;do{a=k[g+(d<<2)>>2]|0;i=k[e+(d<<2)>>2]|0;c=i+a|0;if((i|0)>0)do{l=+p[f+(a<<4)>>3];j=+p[f+(a<<4)+8>>3];b=b+(l*l+j*j);a=a+1|0}while((a|0)<(c|0));d=d+1|0}while((d|0)<(h|0));return +b}c=0;b=0.0;d=k[g>>2]|0;do{c=c+1|0;a=d;d=k[g+(c<<2)>>2]|0;if((a|0)<(d|0))do{j=+p[f+(a<<4)>>3];l=+p[f+(a<<4)+8>>3];b=b+(j*j+l*l);a=a+1|0}while((a|0)!=(d|0))}while((c|0)<(h|0));return +b}function Kl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(!(d&1)){d=c;e=+Vc[d&7](a);return +e}else{d=k[(k[a>>2]|0)+c>>2]|0;e=+Vc[d&7](a);return +e}return 0.0}function Ll(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=u;u=u+64|0;G=H+16|0;y=H;e=k[b+4>>2]|0;d=b+20|0;F=k[d>>2]|0;if(i[b>>0]|0){x=b+16|0;pl(a,k[x>>2]|0,F);y=a+28|0;k[y>>2]=0;z=a+12|0;A=a+4|0;iF(k[z>>2]|0,0,(k[A>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[A>>2]<<2|0)|0;E=k[x>>2]|0;D=k[d>>2]|0;sl(a,((E|0)<(D|0)?D:E)<<1);a:do if((F|0)>0){w=e;r=b+12|0;s=w+20|0;t=w+24|0;v=w+12|0;w=w+16|0;p=b+8|0;q=a+20|0;o=a+24|0;m=0;b:while(1){c=k[z>>2]|0;d=k[c+(m<<2)>>2]|0;if((d|0)!=(k[y>>2]|0)){c=15;break}n=m;m=m+1|0;c=c+(m<<2)|0;if(k[c>>2]|0){c=17;break}k[c>>2]=d;d=(k[r>>2]|0)+n|0;j=k[s>>2]|0;l=k[t>>2]|0;e=k[v>>2]|0;c=k[e+(d<<2)>>2]|0;b=k[w>>2]|0;if(!b)g=k[e+(d+1<<2)>>2]|0;else g=(k[b+(d<<2)>>2]|0)+c|0;d=k[p>>2]|0;h=(k[x>>2]|0)+d|0;c:do if((c|0)<(g|0))do{if((k[l+(c<<2)>>2]|0)>=(d|0))break c;c=c+1|0}while((c|0)<(g|0));while(0);d:do if((c|0)<(g|0))do{d=k[l+(c<<2)>>2]|0;if((d|0)>=(h|0))break d;e=j+(c<<4)|0;k[G>>2]=k[e>>2];k[G+4>>2]=k[e+4>>2];k[G+8>>2]=k[e+8>>2];k[G+12>>2]=k[e+12>>2];d=d-(k[p>>2]|0)|0;e=k[z>>2]|0;b=e+(m<<2)|0;f=k[b>>2]|0;if((f|0)!=(k[y>>2]|0)){c=27;break b}if((f|0)!=(k[e+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(d|0):0){c=30;break b}k[b>>2]=f+1;E=k[y>>2]|0;ql(q,E+1|0,1.0);D=(k[q>>2]|0)+(E<<4)|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[(k[o>>2]|0)+(E<<2)>>2]=d;E=(k[q>>2]|0)+(f<<4)|0;k[E>>2]=k[G>>2];k[E+4>>2]=k[G+4>>2];k[E+8>>2]=k[G+8>>2];k[E+12>>2]=k[G+12>>2];c=c+1|0}while((c|0)<(g|0));while(0);if((m|0)>=(F|0))break a}if((c|0)==15)Oa(16047,15958,414,16152);else if((c|0)==17)Oa(16161,15958,415,16152);else if((c|0)==27)Oa(16249,15958,392,16348);else if((c|0)==30)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=H;return}f=k[y>>2]|0;e=k[A>>2]|0;if((e|0)<=-1){u=H;return}b=k[z>>2]|0;c=e;while(1){if(k[b+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)>=(e|0)){u=H;return}do{c=c+1|0;k[b+(c<<2)>>2]=f}while((c|0)<(k[A>>2]|0));u=H;return}x=b+16|0;z=k[x>>2]|0;i[G>>0]=0;C=G+4|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[C+16>>2]=0;k[C+20>>2]=0;k[C+24>>2]=0;k[C+28>>2]=0;k[G+8>>2]=z;z=G+28|0;k[z>>2]=0;c=Oq((F<<2)+4|0)|0;k[G+12>>2]=c;if(!c){H=Kb(4)|0;cF(H);Cc(H|0,2032,79)}k[C>>2]=F;D=G+16|0;w=k[x>>2]|0;v=k[d>>2]|0;A=G+12|0;iF(c|0,0,(F<<2)+4|0)|0;sl(G,((w|0)<(v|0)?v:w)<<1);e:do if((F|0)>0){w=e;r=b+12|0;s=w+20|0;t=w+24|0;v=w+12|0;w=w+16|0;p=b+8|0;q=G+20|0;o=G+24|0;m=0;f:while(1){c=k[A>>2]|0;d=k[c+(m<<2)>>2]|0;if((d|0)!=(k[z>>2]|0)){c=45;break}n=m;m=m+1|0;c=c+(m<<2)|0;if(k[c>>2]|0){c=47;break}k[c>>2]=d;d=(k[r>>2]|0)+n|0;j=k[s>>2]|0;l=k[t>>2]|0;e=k[v>>2]|0;c=k[e+(d<<2)>>2]|0;b=k[w>>2]|0;if(!b)g=k[e+(d+1<<2)>>2]|0;else g=(k[b+(d<<2)>>2]|0)+c|0;d=k[p>>2]|0;h=(k[x>>2]|0)+d|0;g:do if((c|0)<(g|0))do{if((k[l+(c<<2)>>2]|0)>=(d|0))break g;c=c+1|0}while((c|0)<(g|0));while(0);h:do if((c|0)<(g|0))do{d=k[l+(c<<2)>>2]|0;if((d|0)>=(h|0))break h;e=j+(c<<4)|0;k[y>>2]=k[e>>2];k[y+4>>2]=k[e+4>>2];k[y+8>>2]=k[e+8>>2];k[y+12>>2]=k[e+12>>2];d=d-(k[p>>2]|0)|0;e=k[A>>2]|0;b=e+(m<<2)|0;f=k[b>>2]|0;if((f|0)!=(k[z>>2]|0)){c=57;break f}if((f|0)!=(k[e+(n<<2)>>2]|0)?(k[(k[o>>2]|0)+(f+-1<<2)>>2]|0)>=(d|0):0){c=60;break f}k[b>>2]=f+1;b=k[z>>2]|0;ql(q,b+1|0,1.0);e=(k[q>>2]|0)+(b<<4)|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[(k[o>>2]|0)+(b<<2)>>2]=d;f=(k[q>>2]|0)+(f<<4)|0;k[f>>2]=k[y>>2];k[f+4>>2]=k[y+4>>2];k[f+8>>2]=k[y+8>>2];k[f+12>>2]=k[y+12>>2];c=c+1|0}while((c|0)<(g|0));while(0);if((m|0)>=(F|0))break e}if((c|0)==45)Oa(16047,15958,414,16152);else if((c|0)==47)Oa(16161,15958,415,16152);else if((c|0)==57)Oa(16249,15958,392,16348);else if((c|0)==60)Oa(16371,15958,393,16348)}while(0);if((k[G+16>>2]|0)==0?(E=k[z>>2]|0,B=k[C>>2]|0,(B|0)>-1):0){e=k[A>>2]|0;c=B;while(1){if(k[e+(c<<2)>>2]|0)break;d=c+-1|0;if((c|0)>0)c=d;else{c=d;break}}if((c|0)<(B|0))do{c=c+1|0;k[e+(c<<2)>>2]=E}while((c|0)<(k[C>>2]|0))}i[G>>0]=1;ml(a,G)|0;Pq(k[A>>2]|0);Pq(k[D>>2]|0);c=k[G+20>>2]|0;if(c|0)FA(c);c=k[G+24>>2]|0;if(c|0)FA(c);u=H;return}function Ml(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 g=0,h=0,i=0,j=0;i=u;u=u+704|0;h=i;g=k[a>>2]|0;j=k[a+4>>2]|0;a=b+(j>>1)|0;if(j&1)g=k[(k[a>>2]|0)+g>>2]|0;Tc[g&15](h,a,c,d,e,f);a=CA(704)|0;Dl(a,h);Pq(k[h+676>>2]|0);Pq(k[h+680>>2]|0);g=k[h+684>>2]|0;if(g|0)FA(g);g=k[h+688>>2]|0;if(g|0)FA(g);el(h+456|0);fl(h+136|0);hl(h+8|0);u=i;return a|0}function Nl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;g=a+4|0;d=k[g>>2]|0;h=a+8|0;c=k[h>>2]|0;if((c|d|0)<=-1)Oa(11919,12068,74,12145);c=aa(c,d)|0;if((c|0)>0){iF(k[a>>2]|0,0,c<<4|0)|0;d=k[g>>2]|0}c=k[b+8>>2]|0;f=b+4|0;e=k[f>>2]|0;if(!((d|0)==(c|0)?(k[h>>2]|0)==(e|0):0)){ak(a,c,e);if((k[g>>2]|0)==(c|0)?(k[h>>2]|0)==(e|0):0)o=c;else Oa(12160,12207,721,12285)}else o=d;n=k[a>>2]|0;i=k[f>>2]|0;if((i|0)<=0)return;j=b+20|0;l=b+24|0;m=b+12|0;g=b+16|0;f=0;do{h=k[j>>2]|0;a=k[l>>2]|0;d=k[m>>2]|0;c=k[d+(f<<2)>>2]|0;e=k[g>>2]|0;if(!e)d=k[d+(f+1<<2)>>2]|0;else d=(k[e+(f<<2)>>2]|0)+c|0;if((c|0)<(d|0)){e=aa(f,o)|0;do{b=n+((k[a+(c<<2)>>2]|0)+e<<4)|0;p=h+(c<<4)|0;k[b>>2]=k[p>>2];k[b+4>>2]=k[p+4>>2];k[b+8>>2]=k[p+8>>2];k[b+12>>2]=k[p+12>>2];c=c+1|0}while((c|0)!=(d|0))}f=f+1|0}while((f|0)!=(i|0));return}function Ol(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=u;u=u+16|0;d=e;c=k[a>>2]|0;f=k[a+4>>2]|0;a=b+(f>>1)|0;if(f&1)c=k[(k[a>>2]|0)+c>>2]|0;Nc[c&63](d,a);a=gk(d)|0;c=k[d>>2]|0;if(!c){u=e;return a|0}Pq(k[c+-4>>2]|0);u=e;return a|0}function Pl(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function Ql(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function Rl(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=k[a+4>>2]|0;a=b+(d>>1)|0;if(d&1)c=k[(k[a>>2]|0)+c>>2]|0;return Pc[c&127](a)|0}function Sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function Tl(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(c=k[b+8>>2]|0,pl(a,k[c+8>>2]|0,k[c+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}Ul(a,b);return a|0}function Ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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.0,R=0.0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=u;u=u+48|0;Y=$;d=k[b+4>>2]|0;c=b+8|0;e=k[c>>2]|0;_=k[e+4>>2]|0;if(i[b>>0]|0){pl(a,k[e+8>>2]|0,_);K=a+28|0;k[K>>2]=0;L=a+12|0;M=a+4|0;iF(k[L>>2]|0,0,(k[M>>2]<<2)+4|0)|0;b=k[a+16>>2]|0;if(b|0)iF(b|0,0,k[M>>2]<<2|0)|0;Y=k[c>>2]|0;Z=k[Y+8>>2]|0;Y=k[Y+4>>2]|0;sl(a,((Z|0)<(Y|0)?Y:Z)<<1);a:do if((_|0)>0){G=d;D=G+20|0;E=G+24|0;F=G+12|0;G=G+16|0;H=e+20|0;I=e+24|0;J=e+12|0;B=e+16|0;C=a+20|0;A=a+24|0;y=0;b:while(1){b=k[L>>2]|0;c=k[b+(y<<2)>>2]|0;if((c|0)!=(k[K>>2]|0)){Z=15;break}z=y;y=y+1|0;b=b+(y<<2)|0;if(k[b>>2]|0){Z=17;break}k[b>>2]=c;n=k[D>>2]|0;j=k[E>>2]|0;b=k[F>>2]|0;l=k[b+(z<<2)>>2]|0;c=k[G>>2]|0;if(!c)x=k[b+(y<<2)>>2]|0;else x=(k[c+(z<<2)>>2]|0)+l|0;m=k[H>>2]|0;f=k[I>>2]|0;b=k[J>>2]|0;e=k[b+(z<<2)>>2]|0;c=k[B>>2]|0;if(!c)w=k[b+(y<<2)>>2]|0;else w=(k[c+(z<<2)>>2]|0)+e|0;d=(l|0)<(x|0);c:do if(d){c=k[j+(l<<2)>>2]|0;do if((e|0)<(w|0)){b=k[f+(e<<2)>>2]|0;if((c|0)!=(b|0))if((c|0)<(b|0))break;else{Z=30;break c}else{Z=n;N=m;O=l+1|0;P=e+1|0;Q=+p[Z+(l<<4)>>3]+ +p[N+(e<<4)>>3];R=+p[Z+(l<<4)+8>>3]+ +p[N+(e<<4)+8>>3];N=c;Z=35;break c}}while(0);N=n;O=l+1|0;P=e;Q=+p[N+(l<<4)>>3]+0.0;R=+p[N+(l<<4)+8>>3]+0.0;N=c;Z=35}else Z=30;while(0);do if((Z|0)==30?(Z=0,(e|0)<(w|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[j+(l<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;N=m;O=l;P=e+1|0;Q=+p[N+(e<<4)>>3]+0.0;R=+p[N+(e<<4)+8>>3]+0.0;N=b;Z=35}while(0);d:do if((Z|0)==35?(0,(N|0)>-1):0){v=n;t=O;c=P;g=Q;h=R;b=N;while(1){r=(t|0)<(x|0);s=j+(t<<2)|0;while(1){o=(c|0)<(w|0);q=f+(c<<2)|0;d=k[L>>2]|0;e=d+(y<<2)|0;l=k[e>>2]|0;n=(l|0)==(k[K>>2]|0);if(r){if(!n){Z=47;break b}if((l|0)!=(k[d+(z<<2)>>2]|0)?(k[(k[A>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=50;break b}k[e>>2]=l+1;d=k[K>>2]|0;ql(C,d+1|0,1.0);Z=(k[C>>2]|0)+(d<<4)|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[(k[A>>2]|0)+(d<<2)>>2]=b;d=k[C>>2]|0;p[d+(l<<4)>>3]=g;p[d+(l<<4)+8>>3]=h;d=k[s>>2]|0;if(!o){Z=54;break}b=k[q>>2]|0;if((d|0)==(b|0)){Z=52;break}if((d|0)<(b|0)){Z=54;break}if((d|0)<=(b|0))break d}else{if(!n){Z=47;break b}if((l|0)!=(k[d+(z<<2)>>2]|0)?(k[(k[A>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=50;break b}k[e>>2]=l+1;Z=k[K>>2]|0;ql(C,Z+1|0,1.0);Y=(k[C>>2]|0)+(Z<<4)|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[(k[A>>2]|0)+(Z<<2)>>2]=b;Z=k[C>>2]|0;p[Z+(l<<4)>>3]=g;p[Z+(l<<4)+8>>3]=h;if(!o)break d;b=k[q>>2]|0}g=+p[m+(c<<4)>>3]+0.0;h=+p[m+(c<<4)+8>>3]+0.0;if((b|0)<=-1)break d;else c=c+1|0}if((Z|0)==52){b=c+1|0;g=+p[v+(t<<4)>>3]+ +p[m+(c<<4)>>3];h=+p[v+(t<<4)+8>>3]+ +p[m+(c<<4)+8>>3]}else if((Z|0)==54){b=c;g=+p[v+(t<<4)>>3]+0.0;h=+p[v+(t<<4)+8>>3]+0.0}if((d|0)>-1){t=t+1|0;c=b;b=d}else break}}while(0);if((y|0)>=(_|0))break a}if((Z|0)==15)Oa(16047,15958,414,16152);else if((Z|0)==17)Oa(16161,15958,415,16152);else if((Z|0)==47)Oa(16249,15958,392,16348);else if((Z|0)==50)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=$;return}f=k[K>>2]|0;d=k[M>>2]|0;if((d|0)<=-1){u=$;return}e=k[L>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=$;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[M>>2]|0));u=$;return}J=k[e+8>>2]|0;i[Y>>0]=0;M=Y+4|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[M+16>>2]=0;k[M+20>>2]=0;k[M+24>>2]=0;k[M+28>>2]=0;k[Y+8>>2]=J;J=Y+28|0;k[J>>2]=0;b=Oq((_<<2)+4|0)|0;k[Y+12>>2]=b;if(!b){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[M>>2]=_;N=Y+16|0;P=k[c>>2]|0;K=Y+12|0;iF(b|0,0,(_<<2)+4|0)|0;Z=k[P+8>>2]|0;P=k[P+4>>2]|0;sl(Y,((Z|0)<(P|0)?P:Z)<<1);e:do if((_|0)>0){F=d;C=F+20|0;D=F+24|0;E=F+12|0;F=F+16|0;G=e+20|0;H=e+24|0;I=e+12|0;A=e+16|0;B=Y+20|0;z=Y+24|0;x=0;f:while(1){b=k[K>>2]|0;c=k[b+(x<<2)>>2]|0;if((c|0)!=(k[J>>2]|0)){Z=70;break}y=x;x=x+1|0;b=b+(x<<2)|0;if(k[b>>2]|0){Z=72;break}k[b>>2]=c;n=k[C>>2]|0;j=k[D>>2]|0;b=k[E>>2]|0;l=k[b+(y<<2)>>2]|0;c=k[F>>2]|0;if(!c)w=k[b+(x<<2)>>2]|0;else w=(k[c+(y<<2)>>2]|0)+l|0;m=k[G>>2]|0;f=k[H>>2]|0;b=k[I>>2]|0;e=k[b+(y<<2)>>2]|0;c=k[A>>2]|0;if(!c)v=k[b+(x<<2)>>2]|0;else v=(k[c+(y<<2)>>2]|0)+e|0;d=(l|0)<(w|0);g:do if(d){b=k[j+(l<<2)>>2]|0;do if((e|0)<(v|0)){c=k[f+(e<<2)>>2]|0;if((b|0)!=(c|0))if((b|0)<(c|0))break;else{Z=85;break g}else{Z=n;L=m;S=l+1|0;T=e+1|0;U=+p[Z+(l<<4)>>3]+ +p[L+(e<<4)>>3];V=+p[Z+(l<<4)+8>>3]+ +p[L+(e<<4)+8>>3];L=b;Z=90;break g}}while(0);L=n;S=l+1|0;T=e;U=+p[L+(l<<4)>>3]+0.0;V=+p[L+(l<<4)+8>>3]+0.0;L=b;Z=90}else Z=85;while(0);do if((Z|0)==85?(Z=0,(e|0)<(v|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[j+(l<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;L=m;S=l;T=e+1|0;U=+p[L+(e<<4)>>3]+0.0;V=+p[L+(e<<4)+8>>3]+0.0;L=b;Z=90}while(0);h:do if((Z|0)==90?(0,(L|0)>-1):0){t=n;c=S;s=T;g=U;h=V;b=L;while(1){o=(s|0)<(v|0);q=f+(s<<2)|0;r=c;while(1){c=j+(r<<2)|0;d=k[K>>2]|0;e=d+(x<<2)|0;l=k[e>>2]|0;n=(l|0)==(k[J>>2]|0);if((r|0)>=(w|0)){Z=101;break}if(!n){Z=102;break f}if((l|0)!=(k[d+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=105;break f}k[e>>2]=l+1;d=k[J>>2]|0;ql(B,d+1|0,1.0);Z=(k[B>>2]|0)+(d<<4)|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[(k[z>>2]|0)+(d<<2)>>2]=b;d=k[B>>2]|0;p[d+(l<<4)>>3]=g;p[d+(l<<4)+8>>3]=h;d=k[c>>2]|0;if(o){b=k[q>>2]|0;if((d|0)==(b|0)){Z=107;break}if((d|0)>=(b|0)){Z=100;break}}g=+p[t+(r<<4)>>3]+0.0;h=+p[t+(r<<4)+8>>3]+0.0;if((d|0)>-1){r=r+1|0;b=d}else break h}if((Z|0)==100)if((d|0)>(b|0))Z=111;else break h;else if((Z|0)==101){if(!n){Z=102;break f}if((l|0)!=(k[d+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=105;break f}k[e>>2]=l+1;Z=k[J>>2]|0;ql(B,Z+1|0,1.0);P=(k[B>>2]|0)+(Z<<4)|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[(k[z>>2]|0)+(Z<<2)>>2]=b;Z=k[B>>2]|0;p[Z+(l<<4)>>3]=g;p[Z+(l<<4)+8>>3]=h;if(!o)break h;b=k[q>>2]|0;Z=111}else if((Z|0)==107){Z=0;c=r+1|0;g=+p[t+(r<<4)>>3]+ +p[m+(s<<4)>>3];h=+p[t+(r<<4)+8>>3]+ +p[m+(s<<4)+8>>3];b=d}if((Z|0)==111){c=r;g=+p[m+(s<<4)>>3]+0.0;h=+p[m+(s<<4)+8>>3]+0.0}if((b|0)>-1)s=s+1|0;else break}}while(0);if((x|0)>=(_|0))break e}if((Z|0)==70)Oa(16047,15958,414,16152);else if((Z|0)==72)Oa(16161,15958,415,16152);else if((Z|0)==102)Oa(16249,15958,392,16348);else if((Z|0)==105)Oa(16371,15958,393,16348)}while(0);if((k[Y+16>>2]|0)==0?(X=k[J>>2]|0,W=k[M>>2]|0,(W|0)>-1):0){d=k[K>>2]|0;b=W;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(W|0))do{b=b+1|0;k[d+(b<<2)>>2]=X}while((b|0)<(k[M>>2]|0))}i[Y>>0]=1;ml(a,Y)|0;Pq(k[K>>2]|0);Pq(k[N>>2]|0);b=k[Y+20>>2]|0;if(b|0)FA(b);b=k[Y+24>>2]|0;if(b|0)FA(b);u=$;return}function Vl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a>>2]|0;e=k[a+4>>2]|0;a=b+(e>>1)|0;if(!(e&1)){e=d;Nc[e&63](a,c);return}else{e=k[(k[a>>2]|0)+d>>2]|0;Nc[e&63](a,c);return}}function Wl(a,b){a=a|0;b=b|0;var c=0,d=0;if(i[b>>0]|0?(c=k[b+8>>2]|0,pl(a,k[c+8>>2]|0,k[c+4>>2]|0),c=a+16|0,d=k[c>>2]|0,d|0):0){Pq(d);k[c>>2]=0}Xl(a,b);return a|0}function Xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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.0,R=0.0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=u;u=u+48|0;Y=$;d=k[b+4>>2]|0;c=b+8|0;e=k[c>>2]|0;_=k[e+4>>2]|0;if(i[b>>0]|0){pl(a,k[e+8>>2]|0,_);K=a+28|0;k[K>>2]=0;L=a+12|0;M=a+4|0;iF(k[L>>2]|0,0,(k[M>>2]<<2)+4|0)|0;b=k[a+16>>2]|0;if(b|0)iF(b|0,0,k[M>>2]<<2|0)|0;Y=k[c>>2]|0;Z=k[Y+8>>2]|0;Y=k[Y+4>>2]|0;sl(a,((Z|0)<(Y|0)?Y:Z)<<1);a:do if((_|0)>0){G=d;D=G+20|0;E=G+24|0;F=G+12|0;G=G+16|0;H=e+20|0;I=e+24|0;J=e+12|0;B=e+16|0;C=a+20|0;A=a+24|0;y=0;b:while(1){b=k[L>>2]|0;c=k[b+(y<<2)>>2]|0;if((c|0)!=(k[K>>2]|0)){Z=15;break}z=y;y=y+1|0;b=b+(y<<2)|0;if(k[b>>2]|0){Z=17;break}k[b>>2]=c;n=k[D>>2]|0;j=k[E>>2]|0;b=k[F>>2]|0;l=k[b+(z<<2)>>2]|0;c=k[G>>2]|0;if(!c)x=k[b+(y<<2)>>2]|0;else x=(k[c+(z<<2)>>2]|0)+l|0;m=k[H>>2]|0;f=k[I>>2]|0;b=k[J>>2]|0;e=k[b+(z<<2)>>2]|0;c=k[B>>2]|0;if(!c)w=k[b+(y<<2)>>2]|0;else w=(k[c+(z<<2)>>2]|0)+e|0;d=(l|0)<(x|0);c:do if(d){c=k[j+(l<<2)>>2]|0;do if((e|0)<(w|0)){b=k[f+(e<<2)>>2]|0;if((c|0)!=(b|0))if((c|0)<(b|0))break;else{Z=30;break c}else{Z=n;N=m;O=l+1|0;P=e+1|0;Q=+p[Z+(l<<4)>>3]-+p[N+(e<<4)>>3];R=+p[Z+(l<<4)+8>>3]-+p[N+(e<<4)+8>>3];N=c;Z=35;break c}}while(0);N=n;O=l+1|0;P=e;Q=+p[N+(l<<4)>>3];R=+p[N+(l<<4)+8>>3];N=c;Z=35}else Z=30;while(0);do if((Z|0)==30?(Z=0,(e|0)<(w|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[j+(l<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;N=m;O=l;P=e+1|0;Q=0.0-+p[N+(e<<4)>>3];R=0.0-+p[N+(e<<4)+8>>3];N=b;Z=35}while(0);d:do if((Z|0)==35?(0,(N|0)>-1):0){v=n;t=O;c=P;g=Q;h=R;b=N;while(1){r=(t|0)<(x|0);s=j+(t<<2)|0;while(1){o=(c|0)<(w|0);q=f+(c<<2)|0;d=k[L>>2]|0;e=d+(y<<2)|0;l=k[e>>2]|0;n=(l|0)==(k[K>>2]|0);if(r){if(!n){Z=47;break b}if((l|0)!=(k[d+(z<<2)>>2]|0)?(k[(k[A>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=50;break b}k[e>>2]=l+1;d=k[K>>2]|0;ql(C,d+1|0,1.0);Z=(k[C>>2]|0)+(d<<4)|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[(k[A>>2]|0)+(d<<2)>>2]=b;d=k[C>>2]|0;p[d+(l<<4)>>3]=g;p[d+(l<<4)+8>>3]=h;d=k[s>>2]|0;if(!o){Z=54;break}b=k[q>>2]|0;if((d|0)==(b|0)){Z=52;break}if((d|0)<(b|0)){Z=54;break}if((d|0)<=(b|0))break d}else{if(!n){Z=47;break b}if((l|0)!=(k[d+(z<<2)>>2]|0)?(k[(k[A>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=50;break b}k[e>>2]=l+1;Z=k[K>>2]|0;ql(C,Z+1|0,1.0);Y=(k[C>>2]|0)+(Z<<4)|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[(k[A>>2]|0)+(Z<<2)>>2]=b;Z=k[C>>2]|0;p[Z+(l<<4)>>3]=g;p[Z+(l<<4)+8>>3]=h;if(!o)break d;b=k[q>>2]|0}g=0.0-+p[m+(c<<4)>>3];h=0.0-+p[m+(c<<4)+8>>3];if((b|0)<=-1)break d;else c=c+1|0}if((Z|0)==52){b=c+1|0;g=+p[v+(t<<4)>>3]-+p[m+(c<<4)>>3];h=+p[v+(t<<4)+8>>3]-+p[m+(c<<4)+8>>3]}else if((Z|0)==54){b=c;g=+p[v+(t<<4)>>3];h=+p[v+(t<<4)+8>>3]}if((d|0)>-1){t=t+1|0;c=b;b=d}else break}}while(0);if((y|0)>=(_|0))break a}if((Z|0)==15)Oa(16047,15958,414,16152);else if((Z|0)==17)Oa(16161,15958,415,16152);else if((Z|0)==47)Oa(16249,15958,392,16348);else if((Z|0)==50)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=$;return}f=k[K>>2]|0;d=k[M>>2]|0;if((d|0)<=-1){u=$;return}e=k[L>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=$;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[M>>2]|0));u=$;return}J=k[e+8>>2]|0;i[Y>>0]=0;M=Y+4|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[M+16>>2]=0;k[M+20>>2]=0;k[M+24>>2]=0;k[M+28>>2]=0;k[Y+8>>2]=J;J=Y+28|0;k[J>>2]=0;b=Oq((_<<2)+4|0)|0;k[Y+12>>2]=b;if(!b){$=Kb(4)|0;cF($);Cc($|0,2032,79)}k[M>>2]=_;N=Y+16|0;P=k[c>>2]|0;K=Y+12|0;iF(b|0,0,(_<<2)+4|0)|0;Z=k[P+8>>2]|0;P=k[P+4>>2]|0;sl(Y,((Z|0)<(P|0)?P:Z)<<1);e:do if((_|0)>0){F=d;C=F+20|0;D=F+24|0;E=F+12|0;F=F+16|0;G=e+20|0;H=e+24|0;I=e+12|0;A=e+16|0;B=Y+20|0;z=Y+24|0;x=0;f:while(1){b=k[K>>2]|0;c=k[b+(x<<2)>>2]|0;if((c|0)!=(k[J>>2]|0)){Z=70;break}y=x;x=x+1|0;b=b+(x<<2)|0;if(k[b>>2]|0){Z=72;break}k[b>>2]=c;n=k[C>>2]|0;j=k[D>>2]|0;b=k[E>>2]|0;l=k[b+(y<<2)>>2]|0;c=k[F>>2]|0;if(!c)w=k[b+(x<<2)>>2]|0;else w=(k[c+(y<<2)>>2]|0)+l|0;m=k[G>>2]|0;f=k[H>>2]|0;b=k[I>>2]|0;e=k[b+(y<<2)>>2]|0;c=k[A>>2]|0;if(!c)v=k[b+(x<<2)>>2]|0;else v=(k[c+(y<<2)>>2]|0)+e|0;d=(l|0)<(w|0);g:do if(d){b=k[j+(l<<2)>>2]|0;do if((e|0)<(v|0)){c=k[f+(e<<2)>>2]|0;if((b|0)!=(c|0))if((b|0)<(c|0))break;else{Z=85;break g}else{Z=n;L=m;S=l+1|0;T=e+1|0;U=+p[Z+(l<<4)>>3]-+p[L+(e<<4)>>3];V=+p[Z+(l<<4)+8>>3]-+p[L+(e<<4)+8>>3];L=b;Z=90;break g}}while(0);L=n;S=l+1|0;T=e;U=+p[L+(l<<4)>>3];V=+p[L+(l<<4)+8>>3];L=b;Z=90}else Z=85;while(0);do if((Z|0)==85?(Z=0,(e|0)<(v|0)):0){if(d){b=k[f+(e<<2)>>2]|0;if((k[j+(l<<2)>>2]|0)<=(b|0))break}else b=k[f+(e<<2)>>2]|0;L=m;S=l;T=e+1|0;U=0.0-+p[L+(e<<4)>>3];V=0.0-+p[L+(e<<4)+8>>3];L=b;Z=90}while(0);h:do if((Z|0)==90?(0,(L|0)>-1):0){t=n;c=S;s=T;g=U;h=V;b=L;while(1){o=(s|0)<(v|0);q=f+(s<<2)|0;r=c;while(1){c=j+(r<<2)|0;d=k[K>>2]|0;e=d+(x<<2)|0;l=k[e>>2]|0;n=(l|0)==(k[J>>2]|0);if((r|0)>=(w|0)){Z=101;break}if(!n){Z=102;break f}if((l|0)!=(k[d+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=105;break f}k[e>>2]=l+1;d=k[J>>2]|0;ql(B,d+1|0,1.0);Z=(k[B>>2]|0)+(d<<4)|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[(k[z>>2]|0)+(d<<2)>>2]=b;d=k[B>>2]|0;p[d+(l<<4)>>3]=g;p[d+(l<<4)+8>>3]=h;d=k[c>>2]|0;if(o){b=k[q>>2]|0;if((d|0)==(b|0)){Z=107;break}if((d|0)>=(b|0)){Z=100;break}}g=+p[t+(r<<4)>>3];h=+p[t+(r<<4)+8>>3];if((d|0)>-1){r=r+1|0;b=d}else break h}if((Z|0)==100)if((d|0)>(b|0))Z=111;else break h;else if((Z|0)==101){if(!n){Z=102;break f}if((l|0)!=(k[d+(y<<2)>>2]|0)?(k[(k[z>>2]|0)+(l+-1<<2)>>2]|0)>=(b|0):0){Z=105;break f}k[e>>2]=l+1;Z=k[J>>2]|0;ql(B,Z+1|0,1.0);P=(k[B>>2]|0)+(Z<<4)|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[(k[z>>2]|0)+(Z<<2)>>2]=b;Z=k[B>>2]|0;p[Z+(l<<4)>>3]=g;p[Z+(l<<4)+8>>3]=h;if(!o)break h;b=k[q>>2]|0;Z=111}else if((Z|0)==107){Z=0;c=r+1|0;g=+p[t+(r<<4)>>3]-+p[m+(s<<4)>>3];h=+p[t+(r<<4)+8>>3]-+p[m+(s<<4)+8>>3];b=d}if((Z|0)==111){c=r;g=0.0-+p[m+(s<<4)>>3];h=0.0-+p[m+(s<<4)+8>>3]}if((b|0)>-1)s=s+1|0;else break}}while(0);if((x|0)>=(_|0))break e}if((Z|0)==70)Oa(16047,15958,414,16152);else if((Z|0)==72)Oa(16161,15958,415,16152);else if((Z|0)==102)Oa(16249,15958,392,16348);else if((Z|0)==105)Oa(16371,15958,393,16348)}while(0);if((k[Y+16>>2]|0)==0?(X=k[J>>2]|0,W=k[M>>2]|0,(W|0)>-1):0){d=k[K>>2]|0;b=W;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(W|0))do{b=b+1|0;k[d+(b<<2)>>2]=X}while((b|0)<(k[M>>2]|0))}i[Y>>0]=1;ml(a,Y)|0;Pq(k[K>>2]|0);Pq(k[N>>2]|0);b=k[Y+20>>2]|0;if(b|0)FA(b);b=k[Y+24>>2]|0;if(b|0)FA(b);u=$;return}function Yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+96|0;C=F+72|0;B=F+56|0;E=F+16|0;v=F;e=k[b+4>>2]|0;d=b+16|0;k[B>>2]=k[d>>2];k[B+4>>2]=k[d+4>>2];k[B+8>>2]=k[d+8>>2];k[B+12>>2]=k[d+12>>2];d=b+12|0;D=k[d>>2]|0;if(i[b>>0]|0){b=b+8|0;pl(a,k[b>>2]|0,D);t=a+28|0;k[t>>2]=0;v=a+12|0;w=a+4|0;iF(k[v>>2]|0,0,(k[w>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[w>>2]<<2|0)|0;A=k[b>>2]|0;z=k[d>>2]|0;sl(a,((A|0)<(z|0)?z:A)<<1);a:do if((D|0)>0){r=e;o=r+20|0;p=r+24|0;q=r+12|0;r=r+16|0;s=a+20|0;n=a+24|0;l=0;b:while(1){b=k[v>>2]|0;c=k[b+(l<<2)>>2]|0;if((c|0)!=(k[t>>2]|0)){b=15;break}m=l;l=l+1|0;b=b+(l<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=c;h=k[o>>2]|0;j=k[p>>2]|0;b=k[q>>2]|0;d=k[b+(m<<2)>>2]|0;c=k[r>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{k[C>>2]=k[B>>2];k[C+4>>2]=k[B+4>>2];k[C+8>>2]=k[B+8>>2];k[C+12>>2]=k[B+12>>2];uk(E,h+(d<<4)|0,C);b=k[j+(d<<2)>>2]|0;c=k[v>>2]|0;e=c+(l<<2)|0;f=k[e>>2]|0;if((f|0)!=(k[t>>2]|0)){b=23;break b}if((f|0)!=(k[c+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=26;break b}k[e>>2]=f+1;A=k[t>>2]|0;ql(s,A+1|0,1.0);z=(k[s>>2]|0)+(A<<4)|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[(k[n>>2]|0)+(A<<2)>>2]=b;A=(k[s>>2]|0)+(f<<4)|0;k[A>>2]=k[E>>2];k[A+4>>2]=k[E+4>>2];k[A+8>>2]=k[E+8>>2];k[A+12>>2]=k[E+12>>2];d=d+1|0}while((d|0)<(g|0));if((l|0)>=(D|0))break a}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if(k[a+16>>2]|0){u=F;return}f=k[t>>2]|0;d=k[w>>2]|0;if((d|0)<=-1){u=F;return}e=k[v>>2]|0;b=d;while(1){if(k[e+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)>=(d|0)){u=F;return}do{b=b+1|0;k[e+(b<<2)>>2]=f}while((b|0)<(k[w>>2]|0));u=F;return}b=b+8|0;t=k[b>>2]|0;i[E>>0]=0;x=E+4|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[x+16>>2]=0;k[x+20>>2]=0;k[x+24>>2]=0;k[x+28>>2]=0;k[E+8>>2]=t;t=E+28|0;k[t>>2]=0;c=Oq((D<<2)+4|0)|0;k[E+12>>2]=c;if(!c){F=Kb(4)|0;cF(F);Cc(F|0,2032,79)}k[x>>2]=D;y=E+16|0;s=k[b>>2]|0;r=k[d>>2]|0;w=E+12|0;iF(c|0,0,(D<<2)+4|0)|0;sl(E,((s|0)<(r|0)?r:s)<<1);c:do if((D|0)>0){r=e;o=r+20|0;p=r+24|0;q=r+12|0;r=r+16|0;s=E+20|0;n=E+24|0;l=0;d:while(1){b=k[w>>2]|0;c=k[b+(l<<2)>>2]|0;if((c|0)!=(k[t>>2]|0)){b=41;break}m=l;l=l+1|0;b=b+(l<<2)|0;if(k[b>>2]|0){b=43;break}k[b>>2]=c;h=k[o>>2]|0;j=k[p>>2]|0;b=k[q>>2]|0;d=k[b+(m<<2)>>2]|0;c=k[r>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+d|0;if((d|0)<(g|0))do{k[C>>2]=k[B>>2];k[C+4>>2]=k[B+4>>2];k[C+8>>2]=k[B+8>>2];k[C+12>>2]=k[B+12>>2];uk(v,h+(d<<4)|0,C);b=k[j+(d<<2)>>2]|0;c=k[w>>2]|0;e=c+(l<<2)|0;f=k[e>>2]|0;if((f|0)!=(k[t>>2]|0)){b=49;break d}if((f|0)!=(k[c+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(f+-1<<2)>>2]|0)>=(b|0):0){b=52;break d}k[e>>2]=f+1;e=k[t>>2]|0;ql(s,e+1|0,1.0);c=(k[s>>2]|0)+(e<<4)|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[(k[n>>2]|0)+(e<<2)>>2]=b;f=(k[s>>2]|0)+(f<<4)|0;k[f>>2]=k[v>>2];k[f+4>>2]=k[v+4>>2];k[f+8>>2]=k[v+8>>2];k[f+12>>2]=k[v+12>>2];d=d+1|0}while((d|0)<(g|0));if((l|0)>=(D|0))break c}if((b|0)==41)Oa(16047,15958,414,16152);else if((b|0)==43)Oa(16161,15958,415,16152);else if((b|0)==49)Oa(16249,15958,392,16348);else if((b|0)==52)Oa(16371,15958,393,16348)}while(0);if((k[E+16>>2]|0)==0?(A=k[t>>2]|0,z=k[x>>2]|0,(z|0)>-1):0){d=k[w>>2]|0;b=z;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(z|0))do{b=b+1|0;k[d+(b<<2)>>2]=A}while((b|0)<(k[x>>2]|0))}i[E>>0]=1;ml(a,E)|0;Pq(k[w>>2]|0);Pq(k[y>>2]|0);b=k[E+20>>2]|0;if(b|0)FA(b);b=k[E+24>>2]|0;if(b|0)FA(b);u=F;return}function Zl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+704|0;e=f;d=k[a>>2]|0;g=k[a+4>>2]|0;a=b+(g>>1)|0;if(g&1)d=k[(k[a>>2]|0)+d>>2]|0;cd[d&63](e,a,c);a=CA(704)|0;Dl(a,e);Pq(k[e+676>>2]|0);Pq(k[e+680>>2]|0);d=k[e+684>>2]|0;if(d|0)FA(d);d=k[e+688>>2]|0;if(d|0)FA(d);el(e+456|0);fl(e+136|0);hl(e+8|0);u=f;return a|0}function _l(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+128|0;A=B+56|0;z=B+16|0;r=B;$l(A,b);f=b+8|0;y=k[(k[f>>2]|0)+4>>2]|0;if(!(i[b>>0]|0)){e=b+4|0;q=k[(k[e>>2]|0)+8>>2]|0;i[z>>0]=0;v=z+4|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[v+16>>2]=0;k[v+20>>2]=0;k[v+24>>2]=0;k[v+28>>2]=0;k[z+8>>2]=q;q=z+28|0;k[q>>2]=0;c=Oq((y<<2)+4|0)|0;k[z+12>>2]=c;if(!c){B=Kb(4)|0;cF(B);Cc(B|0,2032,79)}k[v>>2]=y;t=z+16|0;b=k[t>>2]|0;if(!b){s=z+12|0;p=s;d=y;b=c}else{Pq(b);k[t>>2]=0;b=z+12|0;p=b;s=b;d=k[v>>2]|0;b=k[b>>2]|0}iF(b|0,0,(d<<2)+4|0)|0;o=k[(k[e>>2]|0)+8>>2]|0;n=k[(k[f>>2]|0)+4>>2]|0;sl(z,((o|0)<(n|0)?n:o)<<1);a:do if((y|0)>0){o=z+20|0;n=z+24|0;l=0;b:while(1){f=k[p>>2]|0;d=k[f+(l<<2)>>2]|0;if((d|0)!=(k[q>>2]|0)){b=45;break}m=l;l=l+1|0;b=f+(l<<2)|0;if(k[b>>2]|0){b=47;break}k[b>>2]=d;c=k[A>>2]|0;h=k[c+20>>2]|0;j=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(m<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+e|0;c:do if((e|0)<(g|0)){c=h+(e<<4)|0;k[r>>2]=k[c>>2];k[r+4>>2]=k[c+4>>2];k[r+8>>2]=k[c+8>>2];k[r+12>>2]=k[c+12>>2];if((d|0)!=(k[q>>2]|0)){b=53;break b}while(1){b=k[j+(e<<2)>>2]|0;c=f+(l<<2)|0;if((d|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(d+-1<<2)>>2]|0)>=(b|0):0){b=56;break b}k[c>>2]=d+1;f=k[q>>2]|0;ql(o,f+1|0,1.0);c=(k[o>>2]|0)+(f<<4)|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[(k[n>>2]|0)+(f<<2)>>2]=b;f=(k[o>>2]|0)+(d<<4)|0;k[f>>2]=k[r>>2];k[f+4>>2]=k[r+4>>2];k[f+8>>2]=k[r+8>>2];k[f+12>>2]=k[r+12>>2];e=e+1|0;if((e|0)>=(g|0))break c;f=k[p>>2]|0;d=k[f+(l<<2)>>2]|0;c=h+(e<<4)|0;k[r>>2]=k[c>>2];k[r+4>>2]=k[c+4>>2];k[r+8>>2]=k[c+8>>2];k[r+12>>2]=k[c+12>>2];if((d|0)!=(k[q>>2]|0)){b=53;break b}}}while(0);if((l|0)>=(y|0))break a}if((b|0)==45)Oa(16047,15958,414,16152);else if((b|0)==47)Oa(16161,15958,415,16152);else if((b|0)==53)Oa(16249,15958,392,16348);else if((b|0)==56)Oa(16371,15958,393,16348)}while(0);if((k[z+16>>2]|0)==0?(x=k[q>>2]|0,w=k[v>>2]|0,(w|0)>-1):0){d=k[p>>2]|0;b=w;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(w|0))do{b=b+1|0;k[d+(b<<2)>>2]=x}while((b|0)<(k[v>>2]|0))}i[z>>0]=1;ml(a,z)|0;Pq(k[s>>2]|0);Pq(k[t>>2]|0);b=k[z+20>>2]|0;if(b|0)FA(b);b=k[z+24>>2]|0;if(b|0)FA(b)}else{b=b+4|0;pl(a,k[(k[b>>2]|0)+8>>2]|0,y);p=a+28|0;k[p>>2]=0;q=a+12|0;r=a+4|0;iF(k[q>>2]|0,0,(k[r>>2]<<2)+4|0)|0;c=k[a+16>>2]|0;if(c|0)iF(c|0,0,k[r>>2]<<2|0)|0;x=k[(k[b>>2]|0)+8>>2]|0;w=k[(k[f>>2]|0)+4>>2]|0;sl(a,((x|0)<(w|0)?w:x)<<1);d:do if((y|0)>0){o=a+20|0;n=a+24|0;l=0;e:while(1){f=k[q>>2]|0;d=k[f+(l<<2)>>2]|0;if((d|0)!=(k[p>>2]|0)){b=15;break}m=l;l=l+1|0;b=f+(l<<2)|0;if(k[b>>2]|0){b=17;break}k[b>>2]=d;c=k[A>>2]|0;h=k[c+20>>2]|0;j=k[c+24>>2]|0;b=k[c+12>>2]|0;e=k[b+(m<<2)>>2]|0;c=k[c+16>>2]|0;if(!c)g=k[b+(l<<2)>>2]|0;else g=(k[c+(m<<2)>>2]|0)+e|0;f:do if((e|0)<(g|0)){x=h+(e<<4)|0;k[z>>2]=k[x>>2];k[z+4>>2]=k[x+4>>2];k[z+8>>2]=k[x+8>>2];k[z+12>>2]=k[x+12>>2];if((d|0)!=(k[p>>2]|0)){b=23;break e}while(1){b=k[j+(e<<2)>>2]|0;c=f+(l<<2)|0;if((d|0)!=(k[f+(m<<2)>>2]|0)?(k[(k[n>>2]|0)+(d+-1<<2)>>2]|0)>=(b|0):0){b=26;break e}k[c>>2]=d+1;x=k[p>>2]|0;ql(o,x+1|0,1.0);w=(k[o>>2]|0)+(x<<4)|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[(k[n>>2]|0)+(x<<2)>>2]=b;x=(k[o>>2]|0)+(d<<4)|0;k[x>>2]=k[z>>2];k[x+4>>2]=k[z+4>>2];k[x+8>>2]=k[z+8>>2];k[x+12>>2]=k[z+12>>2];e=e+1|0;if((e|0)>=(g|0))break f;f=k[q>>2]|0;d=k[f+(l<<2)>>2]|0;x=h+(e<<4)|0;k[z>>2]=k[x>>2];k[z+4>>2]=k[x+4>>2];k[z+8>>2]=k[x+8>>2];k[z+12>>2]=k[x+12>>2];if((d|0)!=(k[p>>2]|0)){b=23;break e}}}while(0);if((l|0)>=(y|0))break d}if((b|0)==15)Oa(16047,15958,414,16152);else if((b|0)==17)Oa(16161,15958,415,16152);else if((b|0)==23)Oa(16249,15958,392,16348);else if((b|0)==26)Oa(16371,15958,393,16348)}while(0);if((k[a+16>>2]|0)==0?(t=k[p>>2]|0,s=k[r>>2]|0,(s|0)>-1):0){d=k[q>>2]|0;b=s;while(1){if(k[d+(b<<2)>>2]|0)break;c=b+-1|0;if((b|0)>0)b=c;else{b=c;break}}if((b|0)<(s|0))do{b=b+1|0;k[d+(b<<2)>>2]=t}while((b|0)<(k[r>>2]|0))}}Pq(k[A+36>>2]|0);Pq(k[A+40>>2]|0);b=k[A+44>>2]|0;if(b|0)FA(b);b=k[A+48>>2]|0;if(!b){u=B;return}FA(b);u=B;return}function $l(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a>>2]=0;e=a+8|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;c=a+24|0;d=b+4|0;g=k[(k[d>>2]|0)+8>>2]|0;b=b+8|0;f=k[(k[b>>2]|0)+4>>2]|0;i[c>>0]=0;h=a+28|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;k[h+24>>2]=0;k[h+28>>2]=0;pl(c,g,f);k[a>>2]=c;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;am(k[d>>2]|0,k[b>>2]|0,c);return}function am(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+80|0;h=j+36|0;f=j;d=k[a+8>>2]|0;g=k[b+4>>2]|0;if((d|0)>(g|0)){i[h>>0]=0;e=h+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[h+8>>2]=d;k[h+28>>2]=0;d=Oq((g<<2)+4|0)|0;k[h+12>>2]=d;if(!d){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[e>>2]=g;iF(d|0,0,(g<<2)+4|0)|0;bm(a,b,h,1);i[h>>0]=1;ml(c,h)|0;Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);d=k[h+20>>2]|0;if(d|0)FA(d);d=k[h+24>>2]|0;if(d|0)FA(d);u=j;return}i[h>>0]=0;e=h+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[h+8>>2]=d;k[h+28>>2]=0;d=Oq((g<<2)+4|0)|0;k[h+12>>2]=d;if(!d){j=Kb(4)|0;cF(j);Cc(j|0,2032,79)}k[e>>2]=g;iF(d|0,0,(g<<2)+4|0)|0;bm(a,b,h,0);i[f>>0]=0;d=f+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;cm(f,h)|0;i[f>>0]=1;yl(c,f)|0;Pq(k[f+12>>2]|0);Pq(k[f+16>>2]|0);d=k[f+20>>2]|0;if(d|0)FA(d);d=k[f+24>>2]|0;if(d|0)FA(d);Pq(k[h+12>>2]|0);Pq(k[h+16>>2]|0);d=k[h+20>>2]|0;if(d|0)FA(d);d=k[h+24>>2]|0;if(d|0)FA(d);u=j;return} -function so(a){a=a|0;kc(2096,30859);mb(2112,30864,1,1,0);Jb(2120,30633,1,-128,127);Jb(2136,30638,1,-128,127);Jb(2128,30650,1,0,255);Jb(2144,30664,2,-32768,32767);Jb(2152,30670,2,0,65535);Jb(2160,30869,4,-2147483648,2147483647);Jb(2168,30873,4,0,-1);Jb(2176,30886,4,-2147483648,2147483647);Jb(2184,30891,4,0,-1);wc(2192,30915,4);wc(2200,31027,8);Xa(600,30242);Xa(624,21755);pc(648,4,21788);Ab(672,21801);fc(680,0,21817);fc(688,0,21847);fc(696,1,21884);fc(704,2,21923);fc(712,3,21954);fc(720,4,21994);fc(728,5,22023);fc(736,4,22061);fc(744,5,22091);fc(688,0,22130);fc(696,1,22162);fc(704,2,22195);fc(712,3,22228);fc(720,4,22262);fc(728,5,22295);fc(752,6,22329);fc(760,7,22360);fc(768,7,22392);return}function to(a){a=a|0;return kq(k[a+4>>2]|0)|0}function uo(){return 31988}function vo(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;a=Co(k[a+60>>2]|0)|0;k[c>>2]=a;a=yo(yb(6,c|0)|0)|0;u=b;return a|0}function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;m=u;u=u+48|0;j=m+16|0;f=m;e=m+32|0;h=a+28|0;d=k[h>>2]|0;k[e>>2]=d;i=a+20|0;d=(k[i>>2]|0)-d|0;k[e+4>>2]=d;k[e+8>>2]=b;k[e+12>>2]=c;d=d+c|0;g=a+60|0;k[f>>2]=k[g>>2];k[f+4>>2]=e;k[f+8>>2]=2;f=yo(gb(146,f|0)|0)|0;a:do if((d|0)!=(f|0)){b=2;while(1){if((f|0)<0)break;d=d-f|0;o=k[e+4>>2]|0;n=f>>>0>o>>>0;e=n?e+8|0:e;b=(n<<31>>31)+b|0;o=f-(n?o:0)|0;k[e>>2]=(k[e>>2]|0)+o;n=e+4|0;k[n>>2]=(k[n>>2]|0)-o;k[j>>2]=k[g>>2];k[j+4>>2]=e;k[j+8>>2]=b;f=yo(gb(146,j|0)|0)|0;if((d|0)==(f|0)){l=3;break a}}k[a+16>>2]=0;k[h>>2]=0;k[i>>2]=0;k[a>>2]=k[a>>2]|32;if((b|0)==2)c=0;else c=c-(k[e+4>>2]|0)|0}else l=3;while(0);if((l|0)==3){o=k[a+44>>2]|0;k[a+16>>2]=o+(k[a+48>>2]|0);k[h>>2]=o;k[i>>2]=o}u=m;return c|0}function xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=u;u=u+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((yo(eb(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;u=e;return a|0}function yo(a){a=a|0;var b=0;if(a>>>0>4294963200){b=zo()|0;k[b>>2]=0-a;a=-1}return a|0}function zo(){return (Ao()|0)+64|0}function Ao(){return Bo()|0}function Bo(){return 3848}function Co(a){a=a|0;return a|0}function Do(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+32|0;d=e;k[a+36>>2]=4;if((k[a>>2]&64|0)==0?(k[d>>2]=k[a+60>>2],k[d+4>>2]=21523,k[d+8>>2]=e+16,xc(54,d|0)|0):0)i[a+75>>0]=-1;d=wo(a,b,c)|0;u=e;return d|0}function Eo(a){a=a|0;return (a+-65|0)>>>0<26|0}function Fo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Go(a,b,c)|0;return d|0}function Go(a,b,c){a=a|0;b=b|0;c=c|0;c=Ho(a,b,c,-1,-1)|0;return c|0}function Ho(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=u;u=u+128|0;g=i;k[g>>2]=0;h=g+4|0;k[h>>2]=a;k[g+44>>2]=a;f=g+8|0;k[f>>2]=(a|0)<0?-1:a+2147483647|0;k[g+76>>2]=-1;Io(g,0);c=Jo(g,c,1,d,e)|0;if(b|0)k[b>>2]=a+((k[h>>2]|0)+(k[g+108>>2]|0)-(k[f>>2]|0));u=i;return c|0}function Io(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a+104>>2]=b;c=k[a+8>>2]|0;d=k[a+4>>2]|0;e=c-d|0;k[a+108>>2]=e;k[a+100>>2]=(b|0)!=0&(e|0)>(b|0)?d+b|0:c;return}function Jo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(b>>>0>36){e=zo()|0;k[e>>2]=22;e=0;d=0}else{r=a+4|0;q=a+100|0;do{f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=Ko(a)|0}while((Lo(f)|0)!=0);b:do switch(f|0){case 43:case 45:{f=((f|0)==45)<<31>>31;g=k[r>>2]|0;if(g>>>0<(k[q>>2]|0)>>>0){k[r>>2]=g+1;p=f;f=l[g>>0]|0;break b}else{p=f;f=Ko(a)|0;break b}}default:p=0}while(0);g=(b|0)==0;do if((b|16|0)==16&(f|0)==48){f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=Ko(a)|0;if((f|32|0)!=120)if(g){b=8;n=46;break}else{n=32;break}f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=Ko(a)|0;if((l[23048+f>>0]|0)>15){d=(k[q>>2]|0)!=0;if(d)k[r>>2]=(k[r>>2]|0)+-1;if(!c){Io(a,0);e=0;d=0;break a}if(!d){e=0;d=0;break a}k[r>>2]=(k[r>>2]|0)+-1;e=0;d=0;break a}else{b=16;n=46}}else{b=g?10:b;if((l[23048+f>>0]|0)>>>0>>0)n=32;else{if(k[q>>2]|0)k[r>>2]=(k[r>>2]|0)+-1;Io(a,0);e=zo()|0;k[e>>2]=22;e=0;d=0;break a}}while(0);c:do if((n|0)==32)if((b|0)==10){b=f+-48|0;if(b>>>0<10){f=0;g=b;do{f=(f*10|0)+g|0;b=k[r>>2]|0;if(b>>>0<(k[q>>2]|0)>>>0){k[r>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;g=b+-48|0}while(g>>>0<10&f>>>0<429496729);c=0}else{b=f;f=0;c=0}h=b+-48|0;if(h>>>0<10){g=b;do{b=sF(f|0,c|0,10,0)|0;j=N;m=((h|0)<0)<<31>>31;o=~m;if(j>>>0>o>>>0|(j|0)==(o|0)&b>>>0>~h>>>0){b=10;n=72;break c}f=kF(b|0,j|0,h|0,m|0)|0;c=N;b=k[r>>2]|0;if(b>>>0<(k[q>>2]|0)>>>0){k[r>>2]=b+1;g=l[b>>0]|0}else g=Ko(a)|0;h=g+-48|0}while(h>>>0<10&(c>>>0<429496729|(c|0)==429496729&f>>>0<2576980378));if(h>>>0>9){g=p;b=c}else{b=10;n=72}}else{g=p;b=c}}else n=46;while(0);d:do if((n|0)==46){if(!(b+-1&b)){n=i[23304+((b*23|0)>>>5&7)>>0]|0;c=i[23048+f>>0]|0;g=c&255;if(g>>>0>>0){f=0;h=g;do{f=h|f<>2]|0;if(g>>>0<(k[q>>2]|0)>>>0){k[r>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;c=i[23048+g>>0]|0;h=c&255}while(f>>>0<134217728&h>>>0>>0);h=0}else{g=f;h=0;f=0}j=lF(-1,-1,n|0)|0;m=N;if((c&255)>>>0>=b>>>0|(h>>>0>m>>>0|(h|0)==(m|0)&f>>>0>j>>>0)){c=h;n=72;break}else g=h;while(1){f=uF(f|0,g|0,n|0)|0;h=N;f=c&255|f;g=k[r>>2]|0;if(g>>>0<(k[q>>2]|0)>>>0){k[r>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;c=i[23048+g>>0]|0;if((c&255)>>>0>=b>>>0|(h>>>0>m>>>0|(h|0)==(m|0)&f>>>0>j>>>0)){c=h;n=72;break d}else g=h}}c=i[23048+f>>0]|0;g=c&255;if(g>>>0>>0){f=0;h=g;do{f=h+(aa(f,b)|0)|0;g=k[r>>2]|0;if(g>>>0<(k[q>>2]|0)>>>0){k[r>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;c=i[23048+g>>0]|0;h=c&255}while(f>>>0<119304647&h>>>0>>0);h=0}else{g=f;f=0;h=0}if((c&255)>>>0>>0){n=qF(-1,-1,b|0,0)|0;o=N;m=h;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&f>>>0>n>>>0){c=m;n=72;break d}h=sF(f|0,m|0,b|0,0)|0;j=N;c=c&255;if(j>>>0>4294967295|(j|0)==-1&h>>>0>~c>>>0){c=m;n=72;break d}f=kF(c|0,0,h|0,j|0)|0;h=N;g=k[r>>2]|0;if(g>>>0<(k[q>>2]|0)>>>0){k[r>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;c=i[23048+g>>0]|0;if((c&255)>>>0>=b>>>0){c=h;n=72;break}else m=h}}else{c=h;n=72}}while(0);if((n|0)==72)if((l[23048+g>>0]|0)>>>0>>0){do{f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=Ko(a)|0}while((l[23048+f>>0]|0)>>>0>>0);g=zo()|0;k[g>>2]=34;g=(d&1|0)==0&0==0?p:0;b=e;f=d}else{g=p;b=c}if(k[q>>2]|0)k[r>>2]=(k[r>>2]|0)+-1;if(!(b>>>0>>0|(b|0)==(e|0)&f>>>0>>0)){if(!((d&1|0)!=0|0!=0|(g|0)!=0)){r=zo()|0;k[r>>2]=34;d=kF(d|0,e|0,-1,-1)|0;e=N;break}if(b>>>0>e>>>0|(b|0)==(e|0)&f>>>0>d>>>0){r=zo()|0;k[r>>2]=34;break}}d=((g|0)<0)<<31>>31;d=hF(f^g|0,b^d|0,g|0,d|0)|0;e=N}while(0);N=e;return d|0}function Ko(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=a+104|0;g=k[c>>2]|0;if((g|0)!=0?(k[a+108>>2]|0)>=(g|0):0)h=4;else{b=Mo(a)|0;if((b|0)>=0){d=k[c>>2]|0;c=a+8|0;if(d){f=k[c>>2]|0;c=k[a+4>>2]|0;e=a+108|0;d=d-(k[e>>2]|0)|0;g=f;if((f-c|0)<(d|0)){f=g;d=g}else{f=c+(d+-1)|0;d=g}}else{d=k[c>>2]|0;e=a+108|0;f=d;c=k[a+4>>2]|0}k[a+100>>2]=f;if(d|0)k[e>>2]=d+1-c+(k[e>>2]|0);c=c+-1|0;if((l[c>>0]|0|0)!=(b|0))i[c>>0]=b}else h=4}if((h|0)==4){k[a+100>>2]=0;b=-1}return b|0}function Lo(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Mo(a){a=a|0;var b=0,c=0;c=u;u=u+16|0;b=c;if((No(a)|0)==0?(Sc[k[a+32>>2]&63](a,b,1)|0)==1:0)a=l[b>>0]|0;else a=-1;u=c;return a|0}function No(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=a+20|0;c=a+28|0;if((k[b>>2]|0)>>>0>(k[c>>2]|0)>>>0)Sc[k[a+36>>2]&63](a,0,0)|0;k[a+16>>2]=0;k[c>>2]=0;k[b>>2]=0;b=k[a>>2]|0;if(!(b&4)){c=(k[a+44>>2]|0)+(k[a+48>>2]|0)|0;k[a+8>>2]=c;k[a+4>>2]=c;b=b<<27>>31}else{k[a>>2]=b|32;b=-1}return b|0}function Oo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Po(a,b,c)|0;return d|0}function Po(a,b,c){a=a|0;b=b|0;c=c|0;c=Ho(a,b,c,0,-2147483648)|0;return c|0}function Qo(a,b){a=+a;b=+b;var c=0.0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0;n=u;u=u+32|0;i=n+24|0;j=n+16|0;l=n+8|0;m=n;p[s>>3]=a;r=k[s>>2]|0;f=k[s+4>>2]|0;p[s>>3]=b;d=k[s>>2]|0;f=f&2147483647;e=k[s+4>>2]&2147483647;g=f>>>0>>0|(f|0)==(e|0)&r>>>0>>0;q=g?d:r;o=g?e:f;d=g?r:d;e=g?f:e;f=lF(q|0,o|0,52)|0;g=lF(d|0,e|0,52)|0;k[s>>2]=q;k[s+4>>2]=o;a=+p[s>>3];k[s>>2]=d;k[s+4>>2]=e;h=+p[s>>3];do if((g|0)!=2047){if(!((d|0)==0&(e|0)==0|(f|0)==2047)){if((f-g|0)>64){a=a+h;break}if(f>>>0>1533){c=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=h*1.90109156629516e-211}else{r=g>>>0<573;c=r?1.90109156629516e-211:1.0;b=r?a*5260135901548373507240989.0e186:a;a=r?h*5260135901548373507240989.0e186:h}Ro(i,j,b);Ro(l,m,a);a=c*+Q(+(+p[m>>3]+ +p[j>>3]+ +p[l>>3]+ +p[i>>3]))}}else a=h;while(0);u=n;return +a}function Ro(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;p[a>>3]=c;p[b>>3]=d*d+(e*e-c+e*2.0*d);return}function So(a,b){a=+a;b=+b;var c=0,d=0;p[s>>3]=a;d=k[s>>2]|0;c=k[s+4>>2]|0;p[s>>3]=b;c=k[s+4>>2]&-2147483648|c&2147483647;k[s>>2]=d;k[s+4>>2]=c;return +(+p[s>>3])}function To(a,b){a=a|0;b=b|0;var c=0,d=0;c=i[a>>0]|0;d=i[b>>0]|0;if(c<<24>>24==0?1:c<<24>>24!=d<<24>>24)a=d;else{do{a=a+1|0;b=b+1|0;c=i[a>>0]|0;d=i[b>>0]|0}while(!(c<<24>>24==0?1:c<<24>>24!=d<<24>>24));a=d}return (c&255)-(a&255)|0}function Uo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do if(!c)a=0;else{while(1){d=i[a>>0]|0;e=i[b>>0]|0;if(d<<24>>24!=e<<24>>24)break;c=c+-1|0;if(!c){a=0;break a}else{a=a+1|0;b=b+1|0}}a=(d&255)-(e&255)|0}while(0);return a|0}function Vo(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,j=0,l=0,m=0;m=u;u=u+128|0;e=m+124|0;l=m;f=l;g=4220;h=f+124|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if((b+-1|0)>>>0>2147483646)if(!b){a=e;b=1;j=4}else{b=zo()|0;k[b>>2]=75;b=-1}else j=4;if((j|0)==4){j=-2-a|0;j=b>>>0>j>>>0?j:b;k[l+48>>2]=j;e=l+20|0;k[e>>2]=a;k[l+44>>2]=a;b=a+j|0;a=l+16|0;k[a>>2]=b;k[l+28>>2]=b;b=Wo(l,c,d)|0;if(j){l=k[e>>2]|0;i[l+(((l|0)==(k[a>>2]|0))<<31>>31)>>0]=0}}u=m;return b|0}function Wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+224|0;m=r+120|0;n=r+80|0;p=r;q=r+136|0;d=n;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[m>>2]=k[c>>2];if((Xo(0,b,m,p,n)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)o=Yo(a)|0;else o=0;c=k[a>>2]|0;l=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;d=a+48|0;if(!(k[d>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=q;g=a+28|0;k[g>>2]=q;h=a+20|0;k[h>>2]=q;k[d>>2]=80;j=a+16|0;k[j>>2]=q+80;c=Xo(a,b,m,p,n)|0;if(f){Sc[k[a+36>>2]&63](a,0,0)|0;c=(k[h>>2]|0)==0?-1:c;k[e>>2]=f;k[d>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else c=Xo(a,b,m,p,n)|0;d=k[a>>2]|0;k[a>>2]=d|l;if(o|0)Zo(a);c=(d&32|0)==0?c:-1}u=r;return c|0}function Xo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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;G=u;u=u+64|0;C=G+16|0;D=G;A=G+24|0;E=G+8|0;F=G+20|0;k[C>>2]=b;x=(a|0)!=0;y=A+40|0;z=y;A=A+39|0;B=E+4|0;g=0;f=0;n=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=zo()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[b>>0]|0;if(!(g<<24>>24)){w=87;break}else h=b;b:while(1){switch(g<<24>>24){case 37:{g=h;w=9;break b}case 0:{g=h;break b}default:{}}v=h+1|0;k[C>>2]=v;g=i[v>>0]|0;h=v}c:do if((w|0)==9)while(1){w=0;if((i[h+1>>0]|0)!=37)break c;g=g+1|0;h=h+2|0;k[C>>2]=h;if((i[h>>0]|0)==37)w=9;else break}while(0);g=g-b|0;if(x)_o(a,b,g);if(g|0){b=h;continue}l=h+1|0;g=(i[l>>0]|0)+-48|0;if(g>>>0<10){v=(i[h+2>>0]|0)==36;t=v?g:-1;n=v?1:n;l=v?h+3|0:l}else t=-1;k[C>>2]=l;g=i[l>>0]|0;h=(g<<24>>24)+-32|0;d:do if(h>>>0<32){m=0;o=g;while(1){g=1<>2]=l;g=i[l>>0]|0;h=(g<<24>>24)+-32|0;if(h>>>0>=32)break;else o=g}}else m=0;while(0);if(g<<24>>24==42){h=l+1|0;g=(i[h>>0]|0)+-48|0;if(g>>>0<10?(i[l+2>>0]|0)==36:0){k[e+(g<<2)>>2]=10;g=k[d+((i[h>>0]|0)+-48<<3)>>2]|0;n=1;l=l+3|0}else{if(n|0){f=-1;break}if(x){n=(k[c>>2]|0)+(4-1)&~(4-1);g=k[n>>2]|0;k[c>>2]=n+4;n=0;l=h}else{g=0;n=0;l=h}}k[C>>2]=l;v=(g|0)<0;g=v?0-g|0:g;m=v?m|8192:m}else{g=$o(C)|0;if((g|0)<0){f=-1;break}l=k[C>>2]|0}do if((i[l>>0]|0)==46){if((i[l+1>>0]|0)!=42){k[C>>2]=l+1;h=$o(C)|0;l=k[C>>2]|0;break}o=l+2|0;h=(i[o>>0]|0)+-48|0;if(h>>>0<10?(i[l+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;h=k[d+((i[o>>0]|0)+-48<<3)>>2]|0;l=l+4|0;k[C>>2]=l;break}if(n|0){f=-1;break a}if(x){v=(k[c>>2]|0)+(4-1)&~(4-1);h=k[v>>2]|0;k[c>>2]=v+4}else h=0;k[C>>2]=o;l=o}else h=-1;while(0);s=0;while(1){if(((i[l>>0]|0)+-65|0)>>>0>57){f=-1;break a}v=l+1|0;k[C>>2]=v;o=i[(i[l>>0]|0)+-65+(23313+(s*58|0))>>0]|0;q=o&255;if((q+-1|0)>>>0<8){s=q;l=v}else break}if(!(o<<24>>24)){f=-1;break}r=(t|0)>-1;do if(o<<24>>24==19)if(r){f=-1;break a}else w=49;else{if(r){k[e+(t<<2)>>2]=q;r=d+(t<<3)|0;t=k[r+4>>2]|0;w=D;k[w>>2]=k[r>>2];k[w+4>>2]=t;w=49;break}if(!x){f=0;break a}ap(D,q,c)}while(0);if((w|0)==49?(w=0,!x):0){g=0;b=v;continue}l=i[l>>0]|0;l=(s|0)!=0&(l&15|0)==3?l&-33:l;r=m&-65537;t=(m&8192|0)==0?m:r;e:do switch(l|0){case 110:switch((s&255)<<24>>24){case 0:{k[k[D>>2]>>2]=f;g=0;b=v;continue a}case 1:{k[k[D>>2]>>2]=f;g=0;b=v;continue a}case 2:{g=k[D>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;b=v;continue a}case 3:{j[k[D>>2]>>1]=f;g=0;b=v;continue a}case 4:{i[k[D>>2]>>0]=f;g=0;b=v;continue a}case 6:{k[k[D>>2]>>2]=f;g=0;b=v;continue a}case 7:{g=k[D>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;b=v;continue a}default:{g=0;b=v;continue a}}case 112:{l=120;h=h>>>0>8?h:8;b=t|8;w=61;break}case 88:case 120:{b=t;w=61;break}case 111:{l=D;b=k[l>>2]|0;l=k[l+4>>2]|0;q=cp(b,l,y)|0;r=z-q|0;m=0;o=23777;h=(t&8|0)==0|(h|0)>(r|0)?h:r+1|0;r=t;w=67;break}case 105:case 100:{l=D;b=k[l>>2]|0;l=k[l+4>>2]|0;if((l|0)<0){b=hF(0,0,b|0,l|0)|0;l=N;m=D;k[m>>2]=b;k[m+4>>2]=l;m=1;o=23777;w=66;break e}else{m=(t&2049|0)!=0&1;o=(t&2048|0)==0?((t&1|0)==0?23777:23779):23778;w=66;break e}}case 117:{l=D;m=0;o=23777;b=k[l>>2]|0;l=k[l+4>>2]|0;w=66;break}case 99:{i[A>>0]=k[D>>2];b=A;m=0;o=23777;q=y;l=1;h=r;break}case 109:{l=zo()|0;l=ep(k[l>>2]|0)|0;w=71;break}case 115:{l=k[D>>2]|0;l=l|0?l:23787;w=71;break}case 67:{k[E>>2]=k[D>>2];k[B>>2]=0;k[D>>2]=E;q=-1;l=E;w=75;break}case 83:{b=k[D>>2]|0;if(!h){gp(a,32,g,0,t);b=0;w=84}else{q=h;l=b;w=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{g=ip(a,+p[D>>3],g,h,t,l)|0;b=v;continue a}default:{m=0;o=23777;q=y;l=h;h=t}}while(0);f:do if((w|0)==61){t=D;s=k[t>>2]|0;t=k[t+4>>2]|0;q=bp(s,t,y,l&32)|0;o=(b&8|0)==0|(s|0)==0&(t|0)==0;m=o?0:2;o=o?23777:23777+(l>>4)|0;r=b;b=s;l=t;w=67}else if((w|0)==66){q=dp(b,l,y)|0;r=t;w=67}else if((w|0)==71){w=0;t=fp(l,0,h)|0;s=(t|0)==0;b=l;m=0;o=23777;q=s?l+h|0:t;l=s?h:t-l|0;h=r}else if((w|0)==75){w=0;o=l;b=0;h=0;while(1){m=k[o>>2]|0;if(!m)break;h=hp(F,m)|0;if((h|0)<0|h>>>0>(q-b|0)>>>0)break;b=h+b|0;if(q>>>0>b>>>0)o=o+4|0;else break}if((h|0)<0){f=-1;break a}gp(a,32,g,b,t);if(!b){b=0;w=84}else{m=0;while(1){h=k[l>>2]|0;if(!h){w=84;break f}h=hp(F,h)|0;m=h+m|0;if((m|0)>(b|0)){w=84;break f}_o(a,F,h);if(m>>>0>=b>>>0){w=84;break}else l=l+4|0}}}while(0);if((w|0)==67){w=0;l=(b|0)!=0|(l|0)!=0;t=(h|0)!=0|l;l=((l^1)&1)+(z-q)|0;b=t?q:y;q=y;l=t?((h|0)>(l|0)?h:l):h;h=(h|0)>-1?r&-65537:r}else if((w|0)==84){w=0;gp(a,32,g,b,t^8192);g=(g|0)>(b|0)?g:b;b=v;continue}s=q-b|0;r=(l|0)<(s|0)?s:l;t=r+m|0;g=(g|0)<(t|0)?t:g;gp(a,32,g,t,h);_o(a,o,m);gp(a,48,g,t,h^65536);gp(a,48,r,s,0);_o(a,b,s);gp(a,32,g,t,h^8192);b=v}g:do if((w|0)==87)if(!a)if(!n)f=0;else{f=1;while(1){b=k[e+(f<<2)>>2]|0;if(!b)break;ap(d+(f<<3)|0,b,c);f=f+1|0;if((f|0)>=10){f=1;break g}}while(1){if(k[e+(f<<2)>>2]|0){f=-1;break g}f=f+1|0;if((f|0)>=10){f=1;break}}}while(0);u=G;return f|0}function Yo(a){a=a|0;return 0}function Zo(a){a=a|0;return}function _o(a,b,c){a=a|0;b=b|0;c=c|0;if(!(k[a>>2]&32))up(b,c,a)|0;return}function $o(a){a=a|0;var b=0,c=0,d=0;c=k[a>>2]|0;d=(i[c>>0]|0)+-48|0;if(d>>>0<10){b=0;do{b=d+(b*10|0)|0;c=c+1|0;k[a>>2]=c;d=(i[c>>0]|0)+-48|0}while(d>>>0<10)}else b=0;return b|0}function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function bp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!((a|0)==0&(b|0)==0))do{c=c+-1|0;i[c>>0]=l[23825+(a&15)>>0]|0|d;a=lF(a|0,b|0,4)|0;b=N}while(!((a|0)==0&(b|0)==0));return c|0}function cp(a,b,c){a=a|0;b=b|0;c=c|0;if(!((a|0)==0&(b|0)==0))do{c=c+-1|0;i[c>>0]=a&7|48;a=lF(a|0,b|0,3)|0;b=N}while(!((a|0)==0&(b|0)==0));return c|0}function dp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){while(1){d=wF(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d&255|48;d=a;a=qF(a|0,b|0,10,0)|0;if(!(b>>>0>9|(b|0)==9&d>>>0>4294967295))break;else b=N}b=a}else b=a;if(b)while(1){c=c+-1|0;i[c>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return c|0}function ep(a){a=a|0;var b=0;b=(op()|0)+188|0;return pp(a,k[b>>2]|0)|0}function fp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=aa(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009|0)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return (c|0?a:0)|0}function gp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;iF(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{_o(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}_o(a,f,e)}u=g;return}function hp(a,b){a=a|0;b=b|0;if(!a)a=0;else a=mp(a,b,0)|0;return a|0}function ip(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=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;G=u;u=u+560|0;j=G+8|0;t=G;F=G+524|0;E=F;m=G+512|0;k[t>>2]=0;D=m+12|0;jp(b)|0;if((N|0)<0){b=-b;B=1;A=23794}else{B=(e&2049|0)!=0&1;A=(e&2048|0)==0?((e&1|0)==0?23795:23800):23797}jp(b)|0;C=N&2146435072;do if(C>>>0<2146435072|(C|0)==2146435072&0<0){q=+kp(b,t)*2.0;g=q!=0.0;if(g)k[t>>2]=(k[t>>2]|0)+-1;w=f|32;if((w|0)==97){r=f&32;p=(r|0)==0?A:A+9|0;o=B|2;g=12-d|0;do if(!(d>>>0>11|(g|0)==0)){b=8.0;do{g=g+-1|0;b=b*16.0}while((g|0)!=0);if((i[p>>0]|0)==45){b=-(b+(-q-b));break}else{b=q+b-b;break}}else b=q;while(0);h=k[t>>2]|0;g=(h|0)<0?0-h|0:h;g=dp(g,((g|0)<0)<<31>>31,D)|0;if((g|0)==(D|0)){g=m+11|0;i[g>>0]=48}i[g+-1>>0]=(h>>31&2)+43;n=g+-2|0;i[n>>0]=f+15;m=(d|0)<1;j=(e&8|0)==0;g=F;do{C=~~b;h=g+1|0;i[g>>0]=l[23825+C>>0]|r;b=(b-+(C|0))*16.0;if((h-E|0)==1?!(j&(m&b==0.0)):0){i[h>>0]=46;g=g+2|0}else g=h}while(b!=0.0);C=g-E|0;E=D-n|0;D=(d|0)!=0&(C+-2|0)<(d|0)?d+2|0:C;g=E+o+D|0;gp(a,32,c,g,e);_o(a,p,o);gp(a,48,c,g,e^65536);_o(a,F,C);gp(a,48,D-C|0,0,0);_o(a,n,E);gp(a,32,c,g,e^8192);break}h=(d|0)<0?6:d;if(g){g=(k[t>>2]|0)+-28|0;k[t>>2]=g;b=q*268435456.0}else{b=q;g=k[t>>2]|0}C=(g|0)<0?j:j+288|0;j=C;do{y=~~b>>>0;k[j>>2]=y;j=j+4|0;b=(b-+(y>>>0))*1.0e9}while(b!=0.0);if((g|0)>0){m=C;o=j;while(1){n=(g|0)<29?g:29;g=o+-4|0;if(g>>>0>=m>>>0){j=0;do{x=uF(k[g>>2]|0,0,n|0)|0;x=kF(x|0,N|0,j|0,0)|0;y=N;v=wF(x|0,y|0,1e9,0)|0;k[g>>2]=v;j=qF(x|0,y|0,1e9,0)|0;g=g+-4|0}while(g>>>0>=m>>>0);if(j){m=m+-4|0;k[m>>2]=j}}j=o;while(1){if(j>>>0<=m>>>0)break;g=j+-4|0;if(!(k[g>>2]|0))j=g;else break}g=(k[t>>2]|0)-n|0;k[t>>2]=g;if((g|0)>0)o=j;else break}}else m=C;if((g|0)<0){d=((h+25|0)/9|0)+1|0;s=(w|0)==102;do{r=0-g|0;r=(r|0)<9?r:9;if(m>>>0>>0){n=(1<>>r;p=0;g=m;do{y=k[g>>2]|0;k[g>>2]=(y>>>r)+p;p=aa(y&n,o)|0;g=g+4|0}while(g>>>0>>0);g=(k[m>>2]|0)==0?m+4|0:m;if(!p){m=g;g=j}else{k[j>>2]=p;m=g;g=j+4|0}}else{m=(k[m>>2]|0)==0?m+4|0:m;g=j}j=s?C:m;j=(g-j>>2|0)>(d|0)?j+(d<<2)|0:g;g=(k[t>>2]|0)+r|0;k[t>>2]=g}while((g|0)<0);g=m;d=j}else{g=m;d=j}y=C;if(g>>>0>>0){j=(y-g>>2)*9|0;n=k[g>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;j=j+1|0}while(n>>>0>=m>>>0)}}else j=0;s=(w|0)==103;v=(h|0)!=0;m=h-((w|0)!=102?j:0)+((v&s)<<31>>31)|0;if((m|0)<(((d-y>>2)*9|0)+-9|0)){m=m+9216|0;r=C+4+(((m|0)/9|0)+-1024<<2)|0;m=((m|0)%9|0)+1|0;if((m|0)<9){n=10;do{n=n*10|0;m=m+1|0}while((m|0)!=9)}else n=10;o=k[r>>2]|0;p=(o>>>0)%(n>>>0)|0;m=(r+4|0)==(d|0);if(!(m&(p|0)==0)){q=(((o>>>0)/(n>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(n|0)/2|0;b=p>>>0>>0?.5:m&(p|0)==(x|0)?1.0:1.5;if(B){x=(i[A>>0]|0)==45;b=x?-b:b;q=x?-q:q}m=o-p|0;k[r>>2]=m;if(q+b!=q){x=m+n|0;k[r>>2]=x;if(x>>>0>999999999){j=r;while(1){m=j+-4|0;k[j>>2]=0;if(m>>>0>>0){g=g+-4|0;k[g>>2]=0}x=(k[m>>2]|0)+1|0;k[m>>2]=x;if(x>>>0>999999999)j=m;else break}}else m=r;j=(y-g>>2)*9|0;o=k[g>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;j=j+1|0}while(o>>>0>=n>>>0)}}else m=r}else m=r;m=m+4|0;m=d>>>0>m>>>0?m:d;x=g}else{m=d;x=g}w=m;while(1){if(w>>>0<=x>>>0){t=0;break}g=w+-4|0;if(!(k[g>>2]|0))w=g;else{t=1;break}}d=0-j|0;do if(s){g=((v^1)&1)+h|0;if((g|0)>(j|0)&(j|0)>-5){n=f+-1|0;h=g+-1-j|0}else{n=f+-2|0;h=g+-1|0}g=e&8;if(!g){if(t?(z=k[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){m=0;g=10;do{g=g*10|0;m=m+1|0}while(!((z>>>0)%(g>>>0)|0|0))}else m=0;else m=9;g=((w-y>>2)*9|0)+-9|0;if((n|32|0)==102){r=g-m|0;r=(r|0)>0?r:0;h=(h|0)<(r|0)?h:r;r=0;break}else{r=g+j-m|0;r=(r|0)>0?r:0;h=(h|0)<(r|0)?h:r;r=0;break}}else r=g}else{n=f;r=e&8}while(0);s=h|r;o=(s|0)!=0&1;p=(n|32|0)==102;if(p){v=0;g=(j|0)>0?j:0}else{g=(j|0)<0?d:j;g=dp(g,((g|0)<0)<<31>>31,D)|0;m=D;if((m-g|0)<2)do{g=g+-1|0;i[g>>0]=48}while((m-g|0)<2);i[g+-1>>0]=(j>>31&2)+43;g=g+-2|0;i[g>>0]=n;v=g;g=m-g|0}g=B+1+h+o+g|0;gp(a,32,c,g,e);_o(a,A,B);gp(a,48,c,g,e^65536);if(p){n=x>>>0>C>>>0?C:x;r=F+9|0;o=r;p=F+8|0;m=n;do{j=dp(k[m>>2]|0,0,r)|0;if((m|0)==(n|0)){if((j|0)==(r|0)){i[p>>0]=48;j=p}}else if(j>>>0>F>>>0){iF(F|0,48,j-E|0)|0;do j=j+-1|0;while(j>>>0>F>>>0)}_o(a,j,o-j|0);m=m+4|0}while(m>>>0<=C>>>0);if(s|0)_o(a,29711,1);if(m>>>0>>0&(h|0)>0)while(1){j=dp(k[m>>2]|0,0,r)|0;if(j>>>0>F>>>0){iF(F|0,48,j-E|0)|0;do j=j+-1|0;while(j>>>0>F>>>0)}_o(a,j,(h|0)<9?h:9);m=m+4|0;j=h+-9|0;if(!(m>>>0>>0&(h|0)>9)){h=j;break}else h=j}gp(a,48,h+9|0,9,0)}else{s=t?w:x+4|0;if((h|0)>-1){t=F+9|0;r=(r|0)==0;d=t;o=0-E|0;p=F+8|0;n=x;do{j=dp(k[n>>2]|0,0,t)|0;if((j|0)==(t|0)){i[p>>0]=48;j=p}do if((n|0)==(x|0)){m=j+1|0;_o(a,j,1);if(r&(h|0)<1){j=m;break}_o(a,29711,1);j=m}else{if(j>>>0<=F>>>0)break;iF(F|0,48,j+o|0)|0;do j=j+-1|0;while(j>>>0>F>>>0)}while(0);E=d-j|0;_o(a,j,(h|0)>(E|0)?E:h);h=h-E|0;n=n+4|0}while(n>>>0>>0&(h|0)>-1)}gp(a,48,h+18|0,18,0);_o(a,v,D-v|0)}gp(a,32,c,g,e^8192)}else{F=(f&32|0)!=0;g=B+3|0;gp(a,32,c,g,e&-65537);_o(a,A,B);_o(a,b!=b|0.0!=0.0?(F?25742:23821):F?23813:23817,3);gp(a,32,c,g,e^8192)}while(0);u=G;return ((g|0)<(c|0)?c:g)|0}function jp(a){a=+a;var b=0;p[s>>3]=a;b=k[s>>2]|0;N=k[s+4>>2]|0;return b|0}function kp(a,b){a=+a;b=b|0;return +(+lp(a,b))}function lp(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[s>>3]=a;c=k[s>>2]|0;d=k[s+4>>2]|0;e=lF(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+lp(a*18446744073709551616.0,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=(e&2047)+-1022;k[s>>2]=c;k[s+4>>2]=d&-2146435073|1071644672;a=+p[s>>3]}}return +a}function mp(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}c=(np()|0)+188|0;if(!(k[k[c>>2]>>2]|0))if((b&-128|0)==57216){i[a>>0]=b;a=1;break}else{a=zo()|0;k[a>>2]=84;a=-1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=zo()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function np(){return Bo()|0}function op(){return Bo()|0}function pp(a,b){a=a|0;b=b|0;var c=0,d=0;d=0;while(1){if((l[23841+d>>0]|0)==(a|0)){a=2;break}c=d+1|0;if((c|0)==87){c=23929;d=87;a=5;break}else d=c}if((a|0)==2)if(!d)c=23929;else{c=23929;a=5}if((a|0)==5)while(1){do{a=c;c=c+1|0}while((i[a>>0]|0)!=0);d=d+-1|0;if(!d)break;else a=5}return qp(c,k[b+20>>2]|0)|0}function qp(a,b){a=a|0;b=b|0;return rp(a,b)|0}function rp(a,b){a=a|0;b=b|0;if(!b)b=0;else b=sp(k[b>>2]|0,k[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=(k[a>>2]|0)+1794895138|0;f=tp(k[a+8>>2]|0,o)|0;d=tp(k[a+12>>2]|0,o)|0;e=tp(k[a+16>>2]|0,o)|0;a:do if((f>>>0>>2>>>0?(n=b-(f<<2)|0,d>>>0>>0&e>>>0>>0):0)?((e|d)&3|0)==0:0){n=d>>>2;m=e>>>2;l=0;while(1){h=f>>>1;j=l+h|0;g=j<<1;e=g+n|0;d=tp(k[a+(e<<2)>>2]|0,o)|0;e=tp(k[a+(e+1<<2)>>2]|0,o)|0;if(!(e>>>0>>0&d>>>0<(b-e|0)>>>0)){d=0;break a}if(i[a+(e+d)>>0]|0){d=0;break a}d=To(c,a+e|0)|0;if(!d)break;d=(d|0)<0;if((f|0)==1){d=0;break a}else{l=d?l:j;f=d?h:f-h|0}}d=g+m|0;e=tp(k[a+(d<<2)>>2]|0,o)|0;d=tp(k[a+(d+1<<2)>>2]|0,o)|0;if(d>>>0>>0&e>>>0<(b-d|0)>>>0)d=(i[a+(d+e)>>0]|0)==0?a+d|0:0;else d=0}else d=0;while(0);return d|0}function tp(a,b){a=a|0;b=b|0;var c=0;c=yF(a|0)|0;return ((b|0)==0?a:c)|0}function up(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(vp(c)|0)){e=k[d>>2]|0;f=5}else d=0;else f=5;a:do if((f|0)==5){h=c+20|0;g=k[h>>2]|0;d=g;if((e-g|0)>>>0>>0){d=Sc[k[c+36>>2]&63](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){g=b;while(1){if(!g){f=0;e=a;break b}e=g+-1|0;if((i[a+e>>0]|0)==10)break;else g=e}d=Sc[k[c+36>>2]&63](c,a,g)|0;if(d>>>0>>0)break a;f=g;e=a+g|0;b=b-g|0;d=k[h>>2]|0}else{f=0;e=a}while(0);nF(d|0,e|0,b|0)|0;k[h>>2]=(k[h>>2]|0)+b;d=f+b|0}while(0);return d|0}function vp(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;c=k[a+44>>2]|0;k[a+28>>2]=c;k[a+20>>2]=c;k[a+16>>2]=c+(k[a+48>>2]|0);a=0}else{k[a>>2]=b|32;a=-1}return a|0}function wp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=k[d>>2]|0;a=(k[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;nF(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function xp(){return 4344}function yp(){var a=0;a=(zp()|0)+188|0;return (k[k[a>>2]>>2]|0?4:1)|0}function zp(){return Bo()|0}function Ap(){return 4348}function Bp(){return 5888}function Cp(a){a=a|0;var b=0;b=a;while(1)if(!(k[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function Dp(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function Ep(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;switch(b|0){case 0:{j=-149;m=24;g=4;break}case 1:{j=-1074;m=53;g=4;break}case 2:{j=-1074;m=53;g=4;break}default:d=0.0}a:do if((g|0)==4){o=a+4|0;n=a+100|0;do{b=k[o>>2]|0;if(b>>>0<(k[n>>2]|0)>>>0){k[o>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0}while((Lo(b)|0)!=0);b:do switch(b|0){case 43:case 45:{f=1-(((b|0)==45&1)<<1)|0;b=k[o>>2]|0;if(b>>>0<(k[n>>2]|0)>>>0){k[o>>2]=b+1;e=l[b>>0]|0;break b}else{e=Ko(a)|0;break b}}default:{e=b;f=1}}while(0);b=0;do{if((e|32|0)!=(i[25733+b>>0]|0))break;do if(b>>>0<7){e=k[o>>2]|0;if(e>>>0<(k[n>>2]|0)>>>0){k[o>>2]=e+1;e=l[e>>0]|0;break}else{e=Ko(a)|0;break}}while(0);b=b+1|0}while(b>>>0<8);c:do switch(b|0){case 8:break;case 3:{g=23;break}default:{h=(c|0)!=0;if(h&b>>>0>3)if((b|0)==8)break c;else{g=23;break c}d:do if(!b){b=0;do{if((e|32|0)!=(i[25742+b>>0]|0))break d;do if(b>>>0<2){e=k[o>>2]|0;if(e>>>0<(k[n>>2]|0)>>>0){k[o>>2]=e+1;e=l[e>>0]|0;break}else{e=Ko(a)|0;break}}while(0);b=b+1|0}while(b>>>0<3)}while(0);switch(b|0){case 3:{b=k[o>>2]|0;if(b>>>0<(k[n>>2]|0)>>>0){k[o>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;if((b|0)==40)b=1;else{if(!(k[n>>2]|0)){d=C;break a}k[o>>2]=(k[o>>2]|0)+-1;d=C;break a}while(1){e=k[o>>2]|0;if(e>>>0<(k[n>>2]|0)>>>0){k[o>>2]=e+1;e=l[e>>0]|0}else e=Ko(a)|0;if(!((e+-48|0)>>>0<10|(e+-65|0)>>>0<26)?!((e|0)==95|(e+-97|0)>>>0<26):0)break;b=b+1|0}if((e|0)==41){d=C;break a}e=(k[n>>2]|0)==0;if(!e)k[o>>2]=(k[o>>2]|0)+-1;if(!h){o=zo()|0;k[o>>2]=22;Io(a,0);d=0.0;break a}if(!b){d=C;break a}while(1){b=b+-1|0;if(!e)k[o>>2]=(k[o>>2]|0)+-1;if(!b){d=C;break a}}}case 0:{if((e|0)==48){b=k[o>>2]|0;if(b>>>0<(k[n>>2]|0)>>>0){k[o>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;if((b|32|0)==120){d=+Fp(a,m,j,f,c);break a}if(!(k[n>>2]|0))b=48;else{k[o>>2]=(k[o>>2]|0)+-1;b=48}}else b=e;d=+Gp(a,b,m,j,f,c);break a}default:{if(k[n>>2]|0)k[o>>2]=(k[o>>2]|0)+-1;o=zo()|0;k[o>>2]=22;Io(a,0);d=0.0;break a}}}}while(0);if((g|0)==23){e=(k[n>>2]|0)==0;if(!e)k[o>>2]=(k[o>>2]|0)+-1;if((c|0)!=0&b>>>0>3)do{if(!e)k[o>>2]=(k[o>>2]|0)+-1;b=b+-1|0}while(b>>>0>3)}d=+(f|0)*D}while(0);return +d}function Fp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0,h=0,i=0.0,j=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=a+4|0;g=k[w>>2]|0;v=a+100|0;if(g>>>0<(k[v>>2]|0)>>>0){k[w>>2]=g+1;g=l[g>>0]|0;h=0}else{g=Ko(a)|0;h=0}a:while(1){switch(g|0){case 46:{n=8;break a}case 48:break;default:{s=0;t=0;p=1.0;f=0.0;u=0;r=h;h=0;q=0;m=0;j=0;break a}}g=k[w>>2]|0;if(g>>>0<(k[v>>2]|0)>>>0){k[w>>2]=g+1;g=l[g>>0]|0;h=1;continue}else{g=Ko(a)|0;h=1;continue}}if((n|0)==8){g=k[w>>2]|0;if(g>>>0<(k[v>>2]|0)>>>0){k[w>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;if((g|0)==48){j=0;h=0;do{g=k[w>>2]|0;if(g>>>0<(k[v>>2]|0)>>>0){k[w>>2]=g+1;g=l[g>>0]|0}else g=Ko(a)|0;j=kF(j|0,h|0,-1,-1)|0;h=N}while((g|0)==48);s=1;t=0;p=1.0;f=0.0;u=0;r=1;q=0;m=0}else{s=1;t=0;p=1.0;f=0.0;u=0;r=h;h=0;q=0;m=0;j=0}}while(1){n=g+-48|0;o=(g|0)==46;if(n>>>0>=10?!(o|((g|32)+-97|0)>>>0<6):0)break;if(o)if(!s){s=1;n=t;i=p;g=u;j=m;h=q}else{g=46;break}else{g=(g|0)>57?(g|32)+-87|0:n;do if(!((q|0)<0|(q|0)==0&m>>>0<8))if((q|0)<0|(q|0)==0&m>>>0<14){p=p*.0625;n=t;i=p;f=f+p*+(g|0);g=u;break}else{g=(t|0)!=0|(g|0)==0;n=g?t:1;i=p;f=g?f:f+p*.5;g=u;break}else{n=t;i=p;g=g+(u<<4)|0}while(0);m=kF(m|0,q|0,1,0)|0;r=1;q=N}o=k[w>>2]|0;if(o>>>0<(k[v>>2]|0)>>>0){k[w>>2]=o+1;t=n;p=i;u=g;g=l[o>>0]|0;continue}else{t=n;p=i;u=g;g=Ko(a)|0;continue}}do if(!r){g=k[v>>2]|0;h=(g|0)!=0;if(h)k[w>>2]=(k[w>>2]|0)+-1;if(e){if(h)k[w>>2]=(k[w>>2]|0)+-1;if(!((s|0)==0|(g|0)==0))k[w>>2]=(k[w>>2]|0)+-1}else Io(a,0);f=+(d|0)*0.0}else{n=(s|0)==0;o=n?m:j;n=n?q:h;if((q|0)<0|(q|0)==0&m>>>0<8){h=u;j=q;do{h=h<<4;m=kF(m|0,j|0,1,0)|0;j=N}while((j|0)<0|(j|0)==0&m>>>0<8);m=h}else m=u;if((g|32|0)==112){h=Hp(a,e)|0;g=N;if((h|0)==0&(g|0)==-2147483648){if(!e){Io(a,0);f=0.0;break}if(!(k[v>>2]|0)){h=0;g=0}else{k[w>>2]=(k[w>>2]|0)+-1;h=0;g=0}}}else if(!(k[v>>2]|0)){h=0;g=0}else{k[w>>2]=(k[w>>2]|0)+-1;h=0;g=0}j=uF(o|0,n|0,2)|0;j=kF(j|0,N|0,-32,-1)|0;j=kF(j|0,N|0,h|0,g|0)|0;g=N;if(!m){f=+(d|0)*0.0;break}w=0-c|0;e=((w|0)<0)<<31>>31;if((g|0)>(e|0)|(g|0)==(e|0)&j>>>0>w>>>0){b=zo()|0;k[b>>2]=34;f=+(d|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}w=c+-106|0;e=((w|0)<0)<<31>>31;if((g|0)<(e|0)|(g|0)==(e|0)&j>>>0>>0){b=zo()|0;k[b>>2]=34;f=+(d|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){h=m;do{w=!(f>=.5);h=h<<1|(w^1)&1;f=f+(w?f:f+-1.0);j=kF(j|0,g|0,-1,-1)|0;g=N}while((h|0)>-1);p=f;m=h}else p=f;w=((b|0)<0)<<31>>31;c=hF(32,0,c|0,((c|0)<0)<<31>>31|0)|0;g=kF(c|0,N|0,j|0,g|0)|0;c=N;if((w|0)>(c|0)|(w|0)==(c|0)&b>>>0>g>>>0)if((g|0)>0)n=59;else{h=0;g=84;n=61}else{g=b;n=59}if((n|0)==59)if((g|0)<53){h=g;g=84-g|0;n=61}else{i=0.0;f=+(d|0)}if((n|0)==61){f=+(d|0);i=+Jp(+Ip(1.0,g),f);g=h}d=(m&1|0)==0&(p!=0.0&(g|0)<32);f=f*(d?0.0:p)+(i+f*+(((d&1)+m|0)>>>0))-i;if(!(f!=0.0)){d=zo()|0;k[d>>2]=34}f=+Lp(f,j)}while(0);return +f}function Gp(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 g=0.0,h=0.0,i=0,j=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=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.0;H=u;u=u+512|0;E=H;F=d+c|0;G=0-F|0;B=a+4|0;C=a+100|0;i=0;a:while(1){switch(b|0){case 46:{z=6;break a}case 48:break;default:{v=0;o=i;p=0;n=0;break a}}b=k[B>>2]|0;if(b>>>0<(k[C>>2]|0)>>>0){k[B>>2]=b+1;b=l[b>>0]|0;i=1;continue}else{b=Ko(a)|0;i=1;continue}}if((z|0)==6){b=k[B>>2]|0;if(b>>>0<(k[C>>2]|0)>>>0){k[B>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;if((b|0)==48){i=0;b=0;while(1){i=kF(i|0,b|0,-1,-1)|0;n=N;b=k[B>>2]|0;if(b>>>0<(k[C>>2]|0)>>>0){k[B>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;if((b|0)==48)b=n;else{v=1;o=1;p=i;break}}}else{v=1;o=i;p=0;n=0}}k[E>>2]=0;m=b+-48|0;j=(b|0)==46;b:do if(j|m>>>0<10){A=E+496|0;w=0;i=0;t=0;x=v;y=o;z=m;o=0;m=0;c:while(1){do if(j)if(!x){x=1;p=o;n=m}else break c;else{o=kF(o|0,m|0,1,0)|0;m=N;v=(b|0)!=48;if((i|0)>=125){if(!v)break;k[A>>2]=k[A>>2]|1;break}j=E+(i<<2)|0;if(!w)b=z;else b=b+-48+((k[j>>2]|0)*10|0)|0;k[j>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;i=(y&1)+i|0;t=v?o:t;y=1}while(0);b=k[B>>2]|0;if(b>>>0<(k[C>>2]|0)>>>0){k[B>>2]=b+1;b=l[b>>0]|0}else b=Ko(a)|0;z=b+-48|0;j=(b|0)==46;if(!(j|z>>>0<10)){v=x;j=y;z=29;break b}}b=w;j=(y|0)!=0;z=37}else{w=0;i=0;t=0;j=o;o=0;m=0;z=29}while(0);do if((z|0)==29){A=(v|0)==0;p=A?o:p;n=A?m:n;j=(j|0)!=0;if(!(j&(b|32|0)==101))if((b|0)>-1){b=w;z=37;break}else{b=w;z=39;break}j=Hp(a,f)|0;b=N;if((j|0)==0&(b|0)==-2147483648){if(!f){Io(a,0);g=0.0;break}if(!(k[C>>2]|0)){j=0;b=0}else{k[B>>2]=(k[B>>2]|0)+-1;j=0;b=0}}y=kF(j|0,b|0,p|0,n|0)|0;b=w;n=N;z=41}while(0);if((z|0)==37)if(k[C>>2]|0){k[B>>2]=(k[B>>2]|0)+-1;if(j){y=p;z=41}else z=40}else z=39;if((z|0)==39)if(j){y=p;z=41}else z=40;do if((z|0)==40){G=zo()|0;k[G>>2]=22;Io(a,0);g=0.0}else if((z|0)==41){j=k[E>>2]|0;if(!j){g=+(e|0)*0.0;break}if(((m|0)<0|(m|0)==0&o>>>0<10)&((y|0)==(o|0)&(n|0)==(m|0))?(c|0)>30|(j>>>c|0)==0:0){g=+(e|0)*+(j>>>0);break}a=(d|0)/-2|0;C=((a|0)<0)<<31>>31;if((n|0)>(C|0)|(n|0)==(C|0)&y>>>0>a>>>0){G=zo()|0;k[G>>2]=34;g=+(e|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=d+-106|0;C=((a|0)<0)<<31>>31;if((n|0)<(C|0)|(n|0)==(C|0)&y>>>0>>0){G=zo()|0;k[G>>2]=34;g=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){m=E+(i<<2)|0;j=k[m>>2]|0;do{j=j*10|0;b=b+1|0}while((b|0)!=9);k[m>>2]=j}i=i+1|0}if((t|0)<9?(t|0)<=(y|0)&(y|0)<18:0){b=k[E>>2]|0;if((y|0)==9){g=+(e|0)*+(b>>>0);break}if((y|0)<9){g=+(e|0)*+(b>>>0)/+(k[7428+(8-y<<2)>>2]|0);break}a=c+27+(aa(y,-3)|0)|0;if((a|0)>30|(b>>>a|0)==0){g=+(e|0)*+(b>>>0)*+(k[7428+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;m=0}else{t=(y|0)>-1?b:b+9|0;o=k[7428+(8-t<<2)>>2]|0;if(i){p=1e9/(o|0)|0;m=0;n=0;j=y;b=0;do{B=E+(b<<2)|0;C=k[B>>2]|0;a=((C>>>0)/(o>>>0)|0)+m|0;k[B>>2]=a;m=aa(p,(C>>>0)%(o>>>0)|0)|0;a=(b|0)==(n|0)&(a|0)==0;j=a?j+-9|0:j;n=a?n+1&127:n;b=b+1|0}while((b|0)!=(i|0));if(!m)m=n;else{k[E+(i<<2)>>2]=m;m=n;i=i+1|0}}else{m=0;i=0;j=y}b=0;y=9-t+j|0}d:while(1){t=(y|0)<18;v=(y|0)==18;w=E+(m<<2)|0;while(1){if(!t){if(!v){j=y;break d}if((k[w>>2]|0)>>>0>=9007199){j=18;break d}}j=0;x=i;i=i+127|0;while(1){n=i&127;o=E+(n<<2)|0;i=uF(k[o>>2]|0,0,29)|0;i=kF(i|0,N|0,j|0,0)|0;j=N;if(j>>>0>0|(j|0)==0&i>>>0>1e9){p=qF(i|0,j|0,1e9,0)|0;i=wF(i|0,j|0,1e9,0)|0}else p=0;k[o>>2]=i;a=(n|0)==(m|0);x=(i|0)==0&(((n|0)!=(x+127&127|0)|a)^1)?n:x;if(a)break;else{j=p;i=n+-1|0}}b=b+-29|0;if(p|0)break;else i=x}m=m+127&127;i=x+127&127;j=E+((x+126&127)<<2)|0;if((m|0)==(x|0))k[j>>2]=k[j>>2]|k[E+(i<<2)>>2];else i=x;k[E+(m<<2)>>2]=p;y=y+9|0}e:while(1){w=i+1&127;x=E+((i+127&127)<<2)|0;while(1){p=(j|0)==18;v=(j|0)>27?9:1;y=m;while(1){m=0;while(1){n=m+y&127;if((n|0)==(i|0)){D=2;z=88;break}n=k[E+(n<<2)>>2]|0;o=k[7460+(m<<2)>>2]|0;if(n>>>0>>0){D=2;z=88;break}if(n>>>0>o>>>0)break;m=m+1|0;if((m|0)>=2){D=m;z=88;break}}if((z|0)==88?(z=0,p&(D|0)==2):0){g=0.0;n=0;break e}b=v+b|0;if((y|0)==(i|0))y=i;else break}p=(1<>>v;o=0;m=y;n=y;do{B=E+(n<<2)|0;C=k[B>>2]|0;a=(C>>>v)+o|0;k[B>>2]=a;o=aa(C&p,t)|0;a=(n|0)==(m|0)&(a|0)==0;j=a?j+-9|0:j;m=a?m+1&127:m;n=n+1&127}while((n|0)!=(i|0));if(!o)continue;if((w|0)!=(m|0))break;k[x>>2]=k[x>>2]|1}k[E+(i<<2)>>2]=o;i=w}do{m=n+y&127;j=i+1&127;if((m|0)==(i|0)){k[E+(j+-1<<2)>>2]=0;i=j}g=g*1.0e9+ +((k[E+(m<<2)>>2]|0)>>>0);n=n+1|0}while((n|0)!=2);s=+(e|0);h=s*g;n=b+53|0;o=n-d|0;p=(o|0)<(c|0);m=p?((o|0)>0?o:0):c;if((m|0)<53){I=+Jp(+Ip(1.0,105-m|0),h);q=+Kp(h,+Ip(1.0,53-m|0));r=I;g=q;q=I+(h-q)}else{r=0.0;g=0.0;q=h}j=y+2&127;if((j|0)!=(i|0)){j=k[E+(j<<2)>>2]|0;do if(j>>>0>=5e8){if((j|0)!=5e8){g=s*.75+g;break}if((y+3&127|0)==(i|0)){g=s*.5+g;break}else{g=s*.75+g;break}}else{if((j|0)==0?(y+3&127|0)==(i|0):0)break;g=s*.25+g}while(0);if((53-m|0)>1?!(+Kp(g,1.0)!=0.0):0)h=g+1.0;else h=g}else h=g;g=q+h-r;do if((n&2147483647|0)>(-2-F|0)){F=!(+P(+g)>=9007199254740992.0);b=((F^1)&1)+b|0;g=F?g:g*.5;if((b+50|0)<=(G|0)?!(h!=0.0&(p&((m|0)!=(o|0)|F))):0)break;G=zo()|0;k[G>>2]=34}while(0);g=+Lp(g,b)}while(0);u=H;return +g}function Hp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=a+4|0;c=k[i>>2]|0;h=a+100|0;if(c>>>0<(k[h>>2]|0)>>>0){k[i>>2]=c+1;c=l[c>>0]|0}else c=Ko(a)|0;switch(c|0){case 43:case 45:{d=(c|0)==45&1;c=k[i>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[i>>2]=c+1;c=l[c>>0]|0}else c=Ko(a)|0;if((b|0)!=0&(c+-48|0)>>>0>9?(k[h>>2]|0)!=0:0)k[i>>2]=(k[i>>2]|0)+-1;break}default:d=0}if((c+-48|0)>>>0>9)if(!(k[h>>2]|0)){d=-2147483648;c=0}else{k[i>>2]=(k[i>>2]|0)+-1;d=-2147483648;c=0}else{e=0;do{e=c+-48+(e*10|0)|0;c=k[i>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[i>>2]=c+1;c=l[c>>0]|0}else c=Ko(a)|0}while((c+-48|0)>>>0<10&(e|0)<214748364);b=((e|0)<0)<<31>>31;if((c+-48|0)>>>0<10){do{b=sF(e|0,b|0,10,0)|0;e=N;c=kF(c|0,((c|0)<0)<<31>>31|0,-48,-1)|0;e=kF(c|0,N|0,b|0,e|0)|0;b=N;c=k[i>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[i>>2]=c+1;c=l[c>>0]|0}else c=Ko(a)|0}while((c+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&e>>>0<2061584302));f=c;g=e}else{f=c;g=e}c=k[h>>2]|0;if((f+-48|0)>>>0<10)do{e=k[i>>2]|0;if(e>>>0>>0){k[i>>2]=e+1;e=l[e>>0]|0}else{e=Ko(a)|0;c=k[h>>2]|0}}while((e+-48|0)>>>0<10);if(c|0)k[i>>2]=(k[i>>2]|0)+-1;i=(d|0)!=0;c=hF(0,0,g|0,b|0)|0;d=i?N:b;c=i?c:g}N=d;return c|0}function Ip(a,b){a=+a;b=b|0;var c=0,d=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;c=b+1022|0;d=(c|0)<-1022;b=b+2044|0;a=d?a*2.2250738585072014e-308:a;b=d?((b|0)>-1022?b:-1022):c}}else{a=a*8988465674311579538646525.0e283;d=b+-1023|0;c=(d|0)>1023;b=b+-2046|0;a=c?a*8988465674311579538646525.0e283:a;b=c?((b|0)<1023?b:1023):d}c=uF(b+1023|0,0,52)|0;d=N;k[s>>2]=c;k[s+4>>2]=d;return +(a*+p[s>>3])}function Jp(a,b){a=+a;b=+b;return +(+So(a,b))}function Kp(a,b){a=+a;b=+b;return +(+Mp(a,b))}function Lp(a,b){a=+a;b=b|0;return +(+Ip(a,b))}function Mp(a,b){a=+a;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;p[s>>3]=a;g=k[s>>2]|0;i=k[s+4>>2]|0;p[s>>3]=b;l=k[s>>2]|0;m=k[s+4>>2]|0;d=lF(g|0,i|0,52)|0;d=d&2047;j=lF(l|0,m|0,52)|0;j=j&2047;n=i&-2147483648;f=uF(l|0,m|0,1)|0;h=N;a:do if(!((f|0)==0&(h|0)==0)?(e=Np(b)|0,c=N&2147483647,!((d|0)==2047|(c>>>0>2146435072|(c|0)==2146435072&e>>>0>0))):0){c=uF(g|0,i|0,1)|0;e=N;if(!(e>>>0>h>>>0|(e|0)==(h|0)&c>>>0>f>>>0))return +((c|0)==(f|0)&(e|0)==(h|0)?a*0.0:a);if(!d){c=uF(g|0,i|0,12)|0;e=N;if((e|0)>-1|(e|0)==-1&c>>>0>4294967295){d=0;do{d=d+-1|0;c=uF(c|0,e|0,1)|0;e=N}while((e|0)>-1|(e|0)==-1&c>>>0>4294967295)}else d=0;g=uF(g|0,i|0,1-d|0)|0;f=N}else f=i&1048575|1048576;if(!j){e=uF(l|0,m|0,12)|0;h=N;if((h|0)>-1|(h|0)==-1&e>>>0>4294967295){c=0;do{c=c+-1|0;e=uF(e|0,h|0,1)|0;h=N}while((h|0)>-1|(h|0)==-1&e>>>0>4294967295)}else c=0;l=uF(l|0,m|0,1-c|0)|0;j=c;i=N}else i=m&1048575|1048576;e=hF(g|0,f|0,l|0,i|0)|0;c=N;h=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;b:do if((d|0)>(j|0)){while(1){if(h){if((e|0)==0&(c|0)==0)break}else{e=g;c=f}g=uF(e|0,c|0,1)|0;f=N;d=d+-1|0;e=hF(g|0,f|0,l|0,i|0)|0;c=N;h=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;if((d|0)<=(j|0))break b}b=a*0.0;break a}while(0);if(h){if((e|0)==0&(c|0)==0){b=a*0.0;break}}else{c=f;e=g}if(c>>>0<1048576|(c|0)==1048576&e>>>0<0)do{e=uF(e|0,c|0,1)|0;c=N;d=d+-1|0}while(c>>>0<1048576|(c|0)==1048576&e>>>0<0);if((d|0)>0){m=kF(e|0,c|0,0,-1048576)|0;c=N;d=uF(d|0,0,52)|0;c=c|N;d=m|d}else{d=lF(e|0,c|0,1-d|0)|0;c=N}k[s>>2]=d;k[s+4>>2]=c|n;b=+p[s>>3]}else o=3;while(0);if((o|0)==3){b=a*b;b=b/b}return +b}function Np(a){a=+a;var b=0;p[s>>3]=a;b=k[s>>2]|0;N=k[s+4>>2]|0;return b|0}function Op(a){a=a|0;return 0}function Pp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function Qp(a,b){a=a|0;b=b|0;return -1|0}function Rp(a){a=a|0;var b=0,c=0,d=0;d=a;a:do if(!(d&3))c=4;else{b=d;while(1){if(!(i[a>>0]|0)){a=b;break a}a=a+1|0;b=a;if(!(b&3)){c=4;break}}}while(0);if((c|0)==4){while(1){b=k[a>>2]|0;if(!((b&-2139062144^-2139062144)&b+-16843009))a=a+4|0;else break}if((b&255)<<24>>24)do a=a+1|0;while((i[a>>0]|0)!=0)}return a-d|0}function Sp(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;Up();k[d>>2]=a;k[d+4>>2]=b;b=yo(pb(91,d|0)|0)|0;u=c;return b|0}function Tp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=b&255;a:do if(!d)a=a+(Rp(a)|0)|0;else{if(a&3){c=b&255;do{e=i[a>>0]|0;if(e<<24>>24==0?1:e<<24>>24==c<<24>>24)break a;a=a+1|0}while((a&3|0)!=0)}d=aa(d,16843009)|0;c=k[a>>2]|0;b:do if(!((c&-2139062144^-2139062144)&c+-16843009))do{e=c^d;if((e&-2139062144^-2139062144)&e+-16843009|0)break b;a=a+4|0;c=k[a>>2]|0}while(!((c&-2139062144^-2139062144)&c+-16843009|0));while(0);c=b&255;while(1){e=i[a>>0]|0;if(e<<24>>24==0?1:e<<24>>24==c<<24>>24)break;else a=a+1|0}}while(0);return a|0}function Up(){return}function Vp(a){a=a|0;if(Wp(a)|0)Pq(a);return}function Wp(a){a=a|0;return (a|0)!=3492&((a|0)!=0&(a|0)!=32052)&1|0}function Xp(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,j=0,l=0;j=u;u=u+16|0;e=j;g=(d|0)==0?32076:d;d=k[g>>2]|0;a:do if(!b)if(!d)d=0;else h=17;else{f=(a|0)==0?e:a;if(!c)d=-2;else{if(!d){d=i[b>>0]|0;if(d<<24>>24>-1){k[f>>2]=d&255;d=d<<24>>24!=0&1;break}e=(Yp()|0)+188|0;d=i[b>>0]|0;if(!(k[k[e>>2]>>2]|0)){k[f>>2]=d<<24>>24&57343;d=1;break}d=(d&255)+-194|0;if(d>>>0>50){h=17;break}d=k[3516+(d<<2)>>2]|0;e=c+-1|0;if(e){b=b+1|0;h=11}}else{e=c;h=11}b:do if((h|0)==11){a=i[b>>0]|0;l=(a&255)>>>3;if((l+-16|l+(d>>26))>>>0>7){h=17;break a}while(1){b=b+1|0;d=(a&255)+-128|d<<6;e=e+-1|0;if((d|0)>=0)break;if(!e)break b;a=i[b>>0]|0;if((a&-64)<<24>>24!=-128){h=17;break a}}k[g>>2]=0;k[f>>2]=d;d=c-e|0;break a}while(0);k[g>>2]=d;d=-2}}while(0);if((h|0)==17){k[g>>2]=0;d=zo()|0;k[d>>2]=84;d=-1}u=j;return d|0}function Yp(){return Bo()|0}function Zp(a,b){a=a|0;b=b|0;return (a+-48|0)>>>0<10|0}function _p(a,b){a=a|0;b=b|0;return Dp(a)|0}function $p(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+272|0;m=o+8|0;n=o;do if(!(i[b>>0]|0)){b=Rb(25746)|0;if(b|0?i[b>>0]|0:0)break;b=Rb(25753+(a*12|0)|0)|0;if(b|0?i[b>>0]|0:0)break;b=Rb(25825)|0;if(b|0?i[b>>0]|0:0)break;b=25830}while(0);c=0;a:do{switch(i[b+c>>0]|0){case 47:case 0:break a;default:{}}c=c+1|0}while(c>>>0<15);d=i[b>>0]|0;if(d<<24>>24!=46?(i[b+c>>0]|0)==0:0)if(d<<24>>24==67)l=15;else{j=b;l=16}else{b=25830;l=15}if((l|0)==15)if(!(i[b+1>>0]|0))l=18;else{j=b;l=16}b:do if((l|0)==16)if((To(j,25830)|0)!=0?(To(j,25838)|0)!=0:0){b=k[8020]|0;if(b|0)do{if(!(To(j,b+8|0)|0))break b;b=k[b+24>>2]|0}while((b|0)!=0);ec(32084);b=k[8020]|0;c:do if(b|0){while(1){if(!(To(j,b+8|0)|0))break;b=k[b+24>>2]|0;if(!b)break c}yc(32084);break b}while(0);d:do if(((k[7999]|0)==0?(e=Rb(25844)|0,(e|0)!=0):0)?(i[e>>0]|0)!=0:0){g=254-c|0;h=c+1|0;d=e;while(1){f=Tp(d,58)|0;b=i[f>>0]|0;e=((b<<24>>24!=0)<<31>>31)+(f-d)|0;if(e>>>0>>0){nF(m|0,d|0,e|0)|0;d=m+e|0;i[d>>0]=47;nF(d+1|0,j|0,c|0)|0;i[m+(h+e)>>0]=0;e=Gc(m|0,n|0)|0;if(e|0)break;b=i[f>>0]|0}d=f+(b<<24>>24!=0&1)|0;if(!(i[d>>0]|0)){l=41;break d}}b=Oq(28)|0;d=k[n>>2]|0;if(!b){Sp(e,d)|0;l=41;break}else{k[b>>2]=e;k[b+4>>2]=d;n=b+8|0;nF(n|0,j|0,c|0)|0;i[n+c>>0]=0;k[b+24>>2]=k[8020];k[8020]=b;break}}else l=41;while(0);if((l|0)==41){b=Oq(28)|0;if(b){k[b>>2]=k[861];k[b+4>>2]=k[862];n=b+8|0;nF(n|0,j|0,c|0)|0;i[n+c>>0]=0;k[b+24>>2]=k[8020];k[8020]=b}}yc(32084);b=(a|0)==0&(b|0)==0?3444:b}else{b=j;l=18}while(0);do if((l|0)==18){if((a|0)==0?(i[b+1>>0]|0)==46:0){b=3444;break}b=0}while(0);u=o;return b|0}function aq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+32|0;g=i;a:do if(!(Wp(c)|0)){h=(c|0)==0;e=0;f=0;do{d=(1<>2]|0;e=((d|0)!=0&1)+e|0;k[g+(f<<2)>>2]=d;f=f+1|0}while((f|0)!=6);switch(e|0){case 0:{c=32052;break a}case 1:{if((k[g>>2]|0)==3444){c=3492;break a}break}default:{}}}else{d=0;do{if(1<>2]=h}d=d+1|0}while((d|0)!=6)}while(0);u=i;return c|0}function bq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;k[f>>2]=d;d=Vo(a,b,c,f)|0;u=e;return d|0}function cq(a){a=a|0;var b=0,c=0;b=(dq()|0)+188|0;c=k[b>>2]|0;if(a|0)k[b>>2]=(a|0)==(-1|0)?32028:a;return ((c|0)==32028?-1:c)|0}function dq(){return Bo()|0}function eq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c|0){d=a;while(1){c=c+-1|0;k[d>>2]=k[b>>2];if(!c)break;else{b=b+4|0;d=d+4|0}}}return a|0}function fq(a){a=+a;var b=0,c=0,d=0;p[s>>3]=a;b=k[s>>2]|0;c=k[s+4>>2]|0;d=lF(b|0,c|0,52)|0;switch(d&2047){case 0:{c=uF(b|0,c|0,12)|0;d=N;if(!((c|0)==0&(d|0)==0))if((d|0)>-1|(d|0)==-1&c>>>0>4294967295){b=-1023;do{b=b+-1|0;c=uF(c|0,d|0,1)|0;d=N}while((d|0)>-1|(d|0)==-1&c>>>0>4294967295)}else b=-1023;else b=-2147483648;break}case 2047:{b=(b|0)!=0|(c&1048575|0)!=0?-2147483648:2147483647;break}default:b=(d&2047)+-1023|0}return b|0}function gq(a,b){a=+a;b=+b;var c=0,d=0,e=0,f=0,g=0;e=hq(a)|0;f=N;d=f&2147483647;do if(!(d>>>0>2146435072|(d|0)==2146435072&e>>>0>0)){c=hq(b)|0;d=N;g=d&2147483647;if(!(g>>>0>2146435072|(g|0)==2146435072&c>>>0>0)){e=lF(e|0,f|0,63)|0;g=lF(c|0,d|0,63)|0;if((e|0)==(g|0)){a=a>3]=a;b=k[s>>2]|0;N=k[s+4>>2]|0;return b|0}function iq(a){a=+a;var b=0;jq(a)|0;b=N&2146435072;do if(b>>>0<2146435072|(b|0)==2146435072&0<0)if(a==0.0){a=-1.0/(a*a);break}else{a=+(fq(a)|0);break}else a=a*a;while(0);return +a}function jq(a){a=+a;var b=0;p[s>>3]=a;b=k[s>>2]|0;N=k[s+4>>2]|0;return b|0}function kq(a){a=a|0;var b=0,c=0;c=(Rp(a)|0)+1|0;b=Oq(c)|0;if(!b)b=0;else nF(b|0,a|0,c|0)|0;return b|0}function lq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;g=j;h=b&255;i[g>>0]=h;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(vp(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){f=a+20|0;d=k[f>>2]|0;if(d>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[f>>2]=d+1;i[d>>0]=h;break}if((Sc[k[a+36>>2]&63](a,g,1)|0)==1)c=l[g>>0]|0;else c=-1}while(0);u=j;return c|0}function mq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+16|0;d=g;a:do if(!b)a=0;else{do if(c|0){f=(a|0)==0?d:a;a=i[b>>0]|0;if(a<<24>>24>-1){k[f>>2]=a&255;a=a<<24>>24!=0&1;break a}e=(nq()|0)+188|0;a=i[b>>0]|0;if(!(k[k[e>>2]>>2]|0)){k[f>>2]=a<<24>>24&57343;a=1;break a}a=(a&255)+-194|0;if(a>>>0<=50){d=b+1|0;e=k[3516+(a<<2)>>2]|0;if(c>>>0<4?e&-2147483648>>>((c*6|0)+-6|0)|0:0)break;a=l[d>>0]|0;c=a>>>3;if((c+-16|c+(e>>26))>>>0<=7){a=a+-128|e<<6;if((a|0)>=0){k[f>>2]=a;a=2;break a}d=(l[b+2>>0]|0)+-128|0;if(d>>>0<=63){d=d|a<<6;if((d|0)>=0){k[f>>2]=d;a=3;break a}a=(l[b+3>>0]|0)+-128|0;if(a>>>0<=63){k[f>>2]=a|d<<6;a=4;break a}}}}}while(0);a=zo()|0;k[a>>2]=84;a=-1}while(0);u=g;return a|0}function nq(){return Bo()|0}function oq(){ec(32092);return 32100}function pq(){yc(32092);return}function qq(a){a=a|0;var b=0,c=0;do if(a){if((k[a+76>>2]|0)<=-1){b=rq(a)|0;break}c=(Yo(a)|0)==0;b=rq(a)|0;if(!c)Zo(a)}else{if(!(k[1054]|0))b=0;else b=qq(k[1054]|0)|0;a=oq()|0;a=k[a>>2]|0;if(a)do{if((k[a+76>>2]|0)>-1)c=Yo(a)|0;else c=0;if((k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0)b=rq(a)|0|b;if(c|0)Zo(a);a=k[a+56>>2]|0}while((a|0)!=0);pq()}while(0);return b|0}function rq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;g=a+28|0;if((k[b>>2]|0)>>>0>(k[g>>2]|0)>>>0?(Sc[k[a+36>>2]&63](a,0,0)|0,(k[b>>2]|0)==0):0)a=-1;else{c=a+4|0;d=k[c>>2]|0;e=a+8|0;f=k[e>>2]|0;if(d>>>0>>0)Sc[k[a+40>>2]&63](a,d-f|0,1)|0;k[a+16>>2]=0;k[g>>2]=0;k[b>>2]=0;k[e>>2]=0;k[c>>2]=0;a=0}return a|0}function sq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;k[e>>2]=c;c=tq(a,b,e)|0;u=d;return c|0}function tq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+128|0;d=f;e=d;g=e+124|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[d+32>>2]=46;k[d+44>>2]=a;k[d+76>>2]=-1;k[d+84>>2]=a;g=vq(d,b,c)|0;u=f;return g|0}function uq(a,b,c){a=a|0;b=b|0;c=c|0;return zq(a,b,c)|0}function vq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0.0,m=0,n=0,q=0,r=0,s=0,t=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,O=0,P=0,Q=0;Q=u;u=u+288|0;J=Q+8|0;K=Q+17|0;L=Q;M=Q+16|0;if((k[a+76>>2]|0)>-1)P=Yo(a)|0;else P=0;d=i[b>>0]|0;a:do if(d<<24>>24){z=a+4|0;A=a+100|0;B=a+108|0;C=a+8|0;D=K+10|0;E=K+33|0;y=J+4|0;F=K+46|0;G=K+94|0;H=K+1|0;I=K+1|0;g=b;t=0;b=0;f=0;e=0;b:while(1){c:do if(!(Lo(d&255)|0)){d=d<<24>>24==37;d:do if(d){m=g+1|0;h=i[m>>0]|0;e:do switch(h<<24>>24){case 37:break d;case 42:{x=0;g=g+2|0;break}default:{d=(h&255)+-48|0;if(d>>>0<10?(i[g+2>>0]|0)==36:0){x=wq(c,d)|0;g=g+3|0;break e}g=(k[c>>2]|0)+(4-1)&~(4-1);x=k[g>>2]|0;k[c>>2]=g+4;g=m}}while(0);d=i[g>>0]|0;h=d&255;if((h+-48|0)>>>0<10){m=0;do{m=(m*10|0)+-48+h|0;g=g+1|0;d=i[g>>0]|0;h=d&255}while((h+-48|0)>>>0<10)}else m=0;d=d<<24>>24==109;w=(x|0)!=0;f=d?0:f;e=d?0:e;g=d?g+1|0:g;d=w&d;h=g+1|0;switch(i[g>>0]|0){case 104:{v=(i[h>>0]|0)==104;n=v?-2:-1;g=v?g+2|0:h;break}case 108:{v=(i[h>>0]|0)==108;n=v?3:1;g=v?g+2|0:h;break}case 106:{n=3;g=h;break}case 116:case 122:{n=1;g=h;break}case 76:{n=2;g=h;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{n=0;break}default:{O=137;break b}}r=l[g>>0]|0;s=(r&47|0)==3;r=s?r|32:r;s=s?1:n;q=r&255;switch(q<<24>>24){case 99:{m=(m|0)>1?m:1;break}case 91:break;case 110:{xq(x,s,t,((t|0)<0)<<31>>31);h=t;break c}default:{Io(a,0);do{h=k[z>>2]|0;if(h>>>0<(k[A>>2]|0)>>>0){k[z>>2]=h+1;h=l[h>>0]|0}else h=Ko(a)|0}while((Lo(h)|0)!=0);if(!(k[A>>2]|0))h=k[z>>2]|0;else{h=(k[z>>2]|0)+-1|0;k[z>>2]=h}t=(k[B>>2]|0)+t+h-(k[C>>2]|0)|0}}Io(a,m);h=k[z>>2]|0;n=k[A>>2]|0;if(h>>>0>>0)k[z>>2]=h+1;else{if((Ko(a)|0)<0){O=137;break b}n=k[A>>2]|0}if(n|0)k[z>>2]=(k[z>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){iF(H|0,-1,256)|0;i[K>>0]=0;if((r|0)==115){i[E>>0]=0;i[D>>0]=0;i[D+1>>0]=0;i[D+2>>0]=0;i[D+3>>0]=0;i[D+4>>0]=0}}else{h=g+1|0;r=(i[h>>0]|0)==94;q=r&1;g=r?g+2|0:h;iF(I|0,r&1|0,256)|0;i[K>>0]=0;switch(i[g>>0]|0){case 45:{h=F;O=64;break}case 93:{h=G;O=64;break}default:r=(q^1)&255}if((O|0)==64){O=0;r=(q^1)&255;i[h>>0]=r;g=g+1|0}while(1){h=i[g>>0]|0;h:do switch(h<<24>>24){case 0:{O=137;break b}case 93:break g;case 45:{q=g+1|0;h=i[q>>0]|0;switch(h<<24>>24){case 93:case 0:{h=45;break h}default:{}}g=i[g+-1>>0]|0;if((g&255)<(h&255)){g=g&255;do{g=g+1|0;i[K+g>>0]=r;h=i[q>>0]|0}while((g|0)<(h&255|0));g=q}else g=q;break}default:{}}while(0);i[K+((h&255)+1)>>0]=r;g=g+1|0}}while(0);h=v?m+1|0:31;r=(s|0)==1;i:do if(r){if(d){e=Oq(h<<2)|0;if(!e){f=0;e=0;d=1;O=137;break b}}else e=x;k[J>>2]=0;k[y>>2]=0;q=h;f=0;j:while(1){n=(e|0)==0;do{k:while(1){h=k[z>>2]|0;if(h>>>0<(k[A>>2]|0)>>>0){k[z>>2]=h+1;h=l[h>>0]|0}else h=Ko(a)|0;if(!(i[K+(h+1)>>0]|0))break j;i[M>>0]=h;switch(Xp(L,M,1,J)|0){case -1:{f=0;O=137;break b}case -2:break;default:break k}}if(!n){k[e+(f<<2)>>2]=k[L>>2];f=f+1|0}}while(!(d&(f|0)==(q|0)));f=q<<1|1;h=Qq(e,f<<2)|0;if(!h){f=0;d=1;O=137;break b}else{s=q;q=f;e=h;f=s}}if(!(yq(J)|0)){f=0;O=137;break b}else{h=f;f=0;q=e}}else{if(d){f=Oq(h)|0;if(!f){f=0;e=0;d=1;O=137;break b}else{n=h;e=0}while(1){do{h=k[z>>2]|0;if(h>>>0<(k[A>>2]|0)>>>0){k[z>>2]=h+1;h=l[h>>0]|0}else h=Ko(a)|0;if(!(i[K+(h+1)>>0]|0)){h=e;q=0;e=0;break i}i[f+e>>0]=h;e=e+1|0}while((e|0)!=(n|0));e=n<<1|1;h=Qq(f,e)|0;if(!h){e=0;d=1;O=137;break b}else{s=n;n=e;f=h;e=s}}}if(!x){f=n;while(1){e=k[z>>2]|0;if(e>>>0>>0){k[z>>2]=e+1;e=l[e>>0]|0}else e=Ko(a)|0;if(!(i[K+(e+1)>>0]|0)){h=0;f=0;q=0;e=0;break i}f=k[A>>2]|0}}else{h=0;f=n;while(1){e=k[z>>2]|0;if(e>>>0>>0){k[z>>2]=e+1;e=l[e>>0]|0}else e=Ko(a)|0;if(!(i[K+(e+1)>>0]|0)){f=x;q=0;e=0;break i}i[x+h>>0]=e;h=h+1|0;f=k[A>>2]|0}}}while(0);if(!(k[A>>2]|0))n=k[z>>2]|0;else{n=(k[z>>2]|0)+-1|0;k[z>>2]=n}n=n-(k[C>>2]|0)+(k[B>>2]|0)|0;if(!n){O=139;break b}if(!((n|0)==(m|0)|v^1)){O=139;break b}do if(d)if(r){k[x>>2]=q;break}else{k[x>>2]=f;break}while(0);if(!v){if(q|0)k[q+(h<<2)>>2]=0;if(!f){f=0;break f}i[f+h>>0]=0}break}case 120:case 88:case 112:{h=16;O=125;break}case 111:{h=8;O=125;break}case 117:case 100:{h=10;O=125;break}case 105:{h=0;O=125;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{j=+Ep(a,s,0);if((k[B>>2]|0)==((k[C>>2]|0)-(k[z>>2]|0)|0)){O=139;break b}if(x)switch(s|0){case 0:{o[x>>2]=j;break f}case 1:{p[x>>3]=j;break f}case 2:{p[x>>3]=j;break f}default:break f}break}default:{}}while(0);do if((O|0)==125){O=0;h=Jo(a,h,0,-1,-1)|0;if((k[B>>2]|0)==((k[C>>2]|0)-(k[z>>2]|0)|0)){O=139;break b}if(w&(r|0)==112){k[x>>2]=h;break}else{xq(x,s,h,N);break}}while(0);b=(w&1)+b|0;h=(k[B>>2]|0)+t+(k[z>>2]|0)-(k[C>>2]|0)|0;break c}while(0);g=g+(d&1)|0;Io(a,0);d=k[z>>2]|0;if(d>>>0<(k[A>>2]|0)>>>0){k[z>>2]=d+1;d=l[d>>0]|0}else d=Ko(a)|0;if((d|0)!=(l[g>>0]|0)){O=22;break b}h=t+1|0}else{while(1){d=g+1|0;if(!(Lo(l[d>>0]|0)|0))break;else g=d}Io(a,0);do{d=k[z>>2]|0;if(d>>>0<(k[A>>2]|0)>>>0){k[z>>2]=d+1;d=l[d>>0]|0}else d=Ko(a)|0}while((Lo(d)|0)!=0);if(!(k[A>>2]|0))d=k[z>>2]|0;else{d=(k[z>>2]|0)+-1|0;k[z>>2]=d}h=(k[B>>2]|0)+t+d-(k[C>>2]|0)|0}while(0);g=g+1|0;d=i[g>>0]|0;if(!(d<<24>>24))break a;else t=h}if((O|0)==22){if(k[A>>2]|0)k[z>>2]=(k[z>>2]|0)+-1;if((b|0)!=0|(d|0)>-1)break;else{d=0;O=138}}else if((O|0)==137){d=d&1;if(!b)O=138}else if((O|0)==139)d=d&1;if((O|0)==138)b=-1;if(d){Pq(f);Pq(e)}}else b=0;while(0);if(P|0)Zo(a);u=Q;return b|0}function wq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=u;u=u+16|0;c=d;k[c>>2]=k[a>>2];while(1){e=(k[c>>2]|0)+(4-1)&~(4-1);a=k[e>>2]|0;k[c>>2]=e+4;if(b>>>0>1)b=b+-1|0;else break}u=d;return a|0}function xq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:do if(a|0)switch(b|0){case -2:{i[a>>0]=c;break a}case -1:{j[a>>1]=c;break a}case 0:{k[a>>2]=c;break a}case 1:{k[a>>2]=c;break a}case 3:{b=a;k[b>>2]=c;k[b+4>>2]=d;break a}default:break a}while(0);return}function yq(a){a=a|0;if(!a)a=1;else a=(k[a>>2]|0)==0;return a&1|0}function zq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+84|0;f=k[d>>2]|0;g=c+256|0;e=fp(f,0,g)|0;e=(e|0)==0?g:e-f|0;c=e>>>0>>0?e:c;nF(b|0,f|0,c|0)|0;k[a+4>>2]=f+c;b=f+e|0;k[a+8>>2]=b;k[d>>2]=b;return c|0}function Aq(a,b,c){a=a|0;b=b|0;c=c|0;return Xp(0,a,b,c|0?c:32104)|0}function Bq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=u;u=u+1040|0;j=n+8|0;l=n;i=k[b>>2]|0;k[l>>2]=i;m=(a|0)!=0;g=m?d:256;a=m?a:j;f=i;a:do if((g|0)!=0&(i|0)!=0){d=0;i=c;while(1){h=i>>>2;c=h>>>0>=g>>>0;if(!(i>>>0>131|c)){c=i;break a}f=c?g:h;c=i-f|0;f=Cq(a,l,f,e)|0;if((f|0)==-1)break;i=(a|0)==(j|0);g=g-(i?0:f)|0;a=i?a:a+(f<<2)|0;d=f+d|0;f=k[l>>2]|0;if((g|0)!=0&(f|0)!=0)i=c;else break a}d=-1;g=0;f=k[l>>2]|0}else d=0;while(0);b:do if((f|0)!=0?(g|0)!=0&(c|0)!=0:0){h=a;while(1){a=Xp(h,f,c,e)|0;if((a+2|0)>>>0<3)break;f=(k[l>>2]|0)+a|0;k[l>>2]=f;c=c-a|0;g=g+-1|0;d=d+1|0;if(!((g|0)!=0&(c|0)!=0))break b;else h=h+4|0}switch(a|0){case -1:{d=-1;break b}case 0:{k[l>>2]=0;break b}default:{k[e>>2]=0;break b}}}while(0);if(m)k[b>>2]=k[l>>2];u=n;return d|0}function Cq(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,j=0;e=k[b>>2]|0;if((d|0)!=0?(f=k[d>>2]|0,(f|0)!=0):0)if(!a){g=e;d=c;j=25}else{k[d>>2]=0;h=c;g=e;j=43}else j=5;a:do if((j|0)==5){j=(Dq()|0)+188|0;d=(a|0)!=0;if(k[k[j>>2]>>2]|0)if(d){d=c;j=15;break}else{d=c;j=14;break}if(!d){c=Rp(e)|0;j=59;break}b:do if(c){d=c;while(1){f=i[e>>0]|0;if(!(f<<24>>24))break;e=e+1|0;k[a>>2]=f<<24>>24&57343;d=d+-1|0;if(!d)break b;else a=a+4|0}k[a>>2]=0;k[b>>2]=0;c=c-d|0;j=59;break a}while(0);k[b>>2]=e;j=59}while(0);c:while(1){d:do if((j|0)==14){while(1){f=i[e>>0]|0;if(((f&255)+-1|0)>>>0<127?(e&3|0)==0:0){j=k[e>>2]|0;f=j&255;if(!((j+-16843009|j)&-2139062144)){do{e=e+4|0;d=d+-4|0;f=k[e>>2]|0}while(!((f+-16843009|f)&-2139062144|0));f=f&255}}f=f&255;if((f+-1|0)>>>0>=127)break;e=e+1|0;d=d+-1|0}f=f+-194|0;if(f>>>0>50)j=53;else{f=k[3516+(f<<2)>>2]|0;g=e+1|0;j=25;continue c}}else if((j|0)==15){e:do if(d){while(1){f=i[e>>0]|0;do if(((f&255)+-1|0)>>>0<127?d>>>0>4&(e&3|0)==0:0){while(1){f=k[e>>2]|0;if((f+-16843009|f)&-2139062144|0){j=38;break}k[a>>2]=f&255;k[a+4>>2]=l[e+1>>0];k[a+8>>2]=l[e+2>>0];g=e+4|0;f=a+16|0;k[a+12>>2]=l[e+3>>0];d=d+-4|0;if(d>>>0>4){a=f;e=g}else{j=37;break}}if((j|0)==37){a=f;e=g;f=i[g>>0]|0;break}else if((j|0)==38){f=f&255;break}}while(0);f=f&255;if((f+-1|0)>>>0>=127)break;e=e+1|0;k[a>>2]=f;d=d+-1|0;if(!d)break e;else a=a+4|0}f=f+-194|0;if(f>>>0>50){j=53;break d}f=k[3516+(f<<2)>>2]|0;h=d;g=e+1|0;j=43;continue c}while(0);k[b>>2]=e;j=59;continue c}else if((j|0)==25){j=(l[g>>0]|0)>>>3;if((j+-16|j+(f>>26))>>>0>7){e=g;j=52}else{e=g+1|0;if(f&33554432){if((i[e>>0]&-64)<<24>>24!=-128){e=g;j=52;break}e=g+2|0;if(f&524288){if((i[e>>0]&-64)<<24>>24!=-128){e=g;j=52;break}e=g+3|0}}d=d+-1|0;j=14;continue c}}else if((j|0)==43){j=0;d=l[g>>0]|0;e=d>>>3;if((e+-16|e+(f>>26))>>>0>7){e=g;d=h;j=52}else{e=g+1|0;d=d+-128|f<<6;do if((d|0)<0){f=(l[e>>0]|0)+-128|0;if(f>>>0>63){e=g+-1|0;c=a;break d}e=g+2|0;d=f|d<<6;if((d|0)<0){f=(l[e>>0]|0)+-128|0;if(f>>>0>63){e=g+-1|0;c=a;break d}else{e=g+3|0;d=f|d<<6;break}}}while(0);k[a>>2]=d;a=a+4|0;d=h+-1|0;j=15;continue c}}else if((j|0)==59)return c|0;while(0);if((j|0)==52){j=0;e=e+-1|0;if(!f)j=53;else c=a}if((j|0)==53)if(!(i[e>>0]|0)){if(a|0){k[a>>2]=0;k[b>>2]=0}c=c-d|0;j=59;continue}else c=a;j=zo()|0;k[j>>2]=84;if(!c){c=-1;j=59;continue}k[b>>2]=e;c=-1;j=59}return 0}function Dq(){return Bo()|0}function Eq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;l=u;u=u+272|0;h=l+8|0;i=l;g=k[b>>2]|0;k[i>>2]=g;j=(a|0)!=0;f=j?d:256;a=j?a:h;d=g;a:do if((f|0)!=0&(g|0)!=0){e=0;g=d;while(1){d=c>>>0>=f>>>0;if(!(d|c>>>0>32)){d=g;break a}d=d?f:c;c=c-d|0;d=Fq(a,i,d,0)|0;if((d|0)==-1)break;g=(a|0)==(h|0);f=f-(g?0:d)|0;a=g?a:a+d|0;e=d+e|0;d=k[i>>2]|0;if((f|0)!=0&(d|0)!=0)g=d;else break a}e=-1;f=0;d=k[i>>2]|0}else e=0;while(0);b:do if((d|0)!=0?(f|0)!=0&(c|0)!=0:0){g=a;while(1){a=mp(g,k[d>>2]|0,0)|0;if((a+1|0)>>>0<2)break;d=(k[i>>2]|0)+4|0;k[i>>2]=d;c=c+-1|0;f=f-a|0;e=a+e|0;if(!((f|0)!=0&(c|0)!=0))break b;else g=g+a|0}if(!a)k[i>>2]=0;else e=-1}while(0);if(j)k[b>>2]=k[i>>2];u=l;return e|0}function Fq(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;h=u;u=u+16|0;g=h;a:do if(!a){c=k[b>>2]|0;d=k[c>>2]|0;if(!d)c=0;else{a=c;c=0;do{if(d>>>0>127){d=mp(g,d,0)|0;if((d|0)==-1){c=-1;break a}}else d=1;c=d+c|0;a=a+4|0;d=k[a>>2]|0}while((d|0)!=0)}}else{b:do if(c>>>0>3){d=c;e=k[b>>2]|0;while(1){f=k[e>>2]|0;if((f+-1|0)>>>0>126){if(!f)break;f=mp(a,f,0)|0;if((f|0)==-1){c=-1;break a}a=a+f|0;d=d-f|0}else{i[a>>0]=f;a=a+1|0;d=d+-1|0;e=k[b>>2]|0}e=e+4|0;k[b>>2]=e;if(d>>>0<=3)break b}i[a>>0]=0;k[b>>2]=0;c=c-d|0;break a}else d=c;while(0);if(d){e=k[b>>2]|0;while(1){f=k[e>>2]|0;if((f+-1|0)>>>0>126){if(!f){e=19;break}f=mp(g,f,0)|0;if((f|0)==-1){c=-1;break a}if(d>>>0>>0){e=22;break}mp(a,k[e>>2]|0,0)|0;a=a+f|0;d=d-f|0}else{i[a>>0]=f;a=a+1|0;d=d+-1|0;e=k[b>>2]|0}e=e+4|0;k[b>>2]=e;if(!d)break a}if((e|0)==19){i[a>>0]=0;k[b>>2]=0;c=c-d|0;break}else if((e|0)==22){c=c-d|0;break}}}while(0);u=h;return c|0}function Gq(){var a=0,b=0,c=0;b=31312;b=sF(k[b>>2]|0,k[b+4>>2]|0,1284865837,1481765933)|0;b=kF(b|0,N|0,1,0)|0;a=N;c=31312;k[c>>2]=b;k[c+4>>2]=a;a=lF(b|0,a|0,33)|0;return a|0}function Hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+16|0;d=g;k[d>>2]=k[c>>2];d=Vo(0,0,b,d)|0;if((d|0)>=0?(e=d+1|0,f=Oq(e)|0,k[a>>2]=f,(f|0)!=0):0)a=Vo(f,e,b,c)|0;else a=-1;u=g;return a|0}function Iq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a&255;c=a&255;if((k[b+76>>2]|0)>=0?(Yo(b)|0)!=0:0){if((c|0)!=(i[b+75>>0]|0)?(f=b+20|0,g=k[f>>2]|0,g>>>0<(k[b+16>>2]|0)>>>0):0){k[f>>2]=g+1;i[g>>0]=h}else c=lq(b,a)|0;Zo(b)}else j=3;do if((j|0)==3){if((c|0)!=(i[b+75>>0]|0)?(d=b+20|0,e=k[d>>2]|0,e>>>0<(k[b+16>>2]|0)>>>0):0){k[d>>2]=e+1;i[e>>0]=h;break}c=lq(b,a)|0}while(0);return c|0}function Jq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;h=u;u=u+128|0;g=h;e=g;f=e+124|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));e=g+4|0;k[e>>2]=a;f=g+8|0;k[f>>2]=-1;k[g+44>>2]=a;k[g+76>>2]=-1;Io(g,0);d=+Ep(g,c,1);c=(k[e>>2]|0)-(k[f>>2]|0)+(k[g+108>>2]|0)|0;if(b|0)k[b>>2]=c|0?a+c|0:a;u=h;return +d}function Kq(a,b){a=a|0;b=b|0;return +(+Jq(a,b,2))}function Lq(a,b,c){a=a|0;b=b|0;c=c|0;return +(+Kq(a,b))}function Mq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c|0){d=a;while(1){c=c+-1|0;k[d>>2]=b;if(!c)break;else d=d+4|0}}return a|0}function Nq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(a-b>>2>>>0>=c>>>0){if(c|0){d=a;while(1){c=c+-1|0;k[d>>2]=k[b>>2];if(!c)break;else{b=b+4|0;d=d+4|0}}}}else do{c=c+-1|0;k[a+(c<<2)>>2]=k[b+(c<<2)>>2]}while((c|0)!=0);return a|0}function Oq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;K=u;u=u+16|0;n=K;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;s=k[8027]|0;c=s>>>a;if(c&3|0){a=(c&1^1)+a|0;c=32148+(a<<1<<2)|0;d=c+8|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[8031]|0)>>>0)Zb();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Zb()}else k[8027]=s&~(1<>2]=J|3;J=e+J+4|0;k[J>>2]=k[J>>2]|1;J=f;u=K;return J|0}r=k[8029]|0;if(o>>>0>r>>>0){if(c|0){h=2<>>12&16;a=a>>>h;d=a>>>5&8;a=a>>>d;f=a>>>2&4;a=a>>>f;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|h|f|c|b)+(a>>>b)|0;a=32148+(b<<1<<2)|0;c=a+8|0;f=k[c>>2]|0;h=f+8|0;d=k[h>>2]|0;do if((a|0)!=(d|0)){if(d>>>0<(k[8031]|0)>>>0)Zb();e=d+12|0;if((k[e>>2]|0)==(f|0)){k[e>>2]=a;k[c>>2]=d;i=s;break}else Zb()}else{i=s&~(1<>2]=o|3;d=f+o|0;k[d+4>>2]=g|1;k[d+g>>2]=g;if(r|0){e=k[8032]|0;b=r>>>3;c=32148+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[8031]|0)>>>0)Zb();else{j=a;l=b}}else{k[8027]=i|b;j=c;l=c+8|0}k[l>>2]=e;k[j+12>>2]=e;k[e+8>>2]=j;k[e+12>>2]=c}k[8029]=g;k[8032]=d;J=h;u=K;return J|0}j=k[8028]|0;if(j){a=(j&0-j)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=k[32412+((H|I|J|c|b)+(a>>>b)<<2)>>2]|0;a=(k[b+4>>2]&-8)-o|0;c=k[b+16+(((k[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!c){i=b;g=a}else{do{I=(k[c+4>>2]&-8)-o|0;J=I>>>0>>0;a=J?I:a;b=J?c:b;c=k[c+16+(((k[c+16>>2]|0)==0&1)<<2)>>2]|0}while((c|0)!=0);i=b;g=a}e=k[8031]|0;if(i>>>0>>0)Zb();h=i+o|0;if(i>>>0>=h>>>0)Zb();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Zb();else{k[a>>2]=0;m=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Zb();b=d+12|0;if((k[b>>2]|0)!=(i|0))Zb();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;m=c;break}else Zb()}while(0);a:do if(f|0){b=k[i+28>>2]|0;a=32412+(b<<2)|0;do if((i|0)==(k[a>>2]|0)){k[a>>2]=m;if(!m){k[8028]=j&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=m;if(!m)break a;else break}else Zb();while(0);a=k[8031]|0;if(m>>>0>>0)Zb();k[m+24>>2]=f;b=k[i+16>>2]|0;do if(b|0)if(b>>>0>>0)Zb();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);b=k[i+20>>2]|0;if(b|0)if(b>>>0<(k[8031]|0)>>>0)Zb();else{k[m+20>>2]=b;k[b+24>>2]=m;break}}while(0);if(g>>>0<16){J=g+o|0;k[i+4>>2]=J|3;J=i+J+4|0;k[J>>2]=k[J>>2]|1}else{k[i+4>>2]=o|3;k[h+4>>2]=g|1;k[h+g>>2]=g;if(r|0){d=k[8032]|0;b=r>>>3;c=32148+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[8031]|0)>>>0)Zb();else{p=a;q=b}}else{k[8027]=s|b;p=c;q=c+8|0}k[q>>2]=d;k[p+12>>2]=d;k[d+8>>2]=p;k[d+12>>2]=c}k[8029]=g;k[8032]=h}J=i+8|0;u=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;j=k[8028]|0;if(j){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)h=31;else{q=(a+1048320|0)>>>16&8;C=a<>>16&4;C=C<>>16&2;h=14-(p|q|h)+(C<>>15)|0;h=o>>>(h+7|0)&1|h<<1}else h=0;c=k[32412+(h<<2)>>2]|0;b:do if(!c){c=0;a=0;C=81}else{a=0;g=o<<((h|0)==31?0:25-(h>>>1)|0);f=0;while(1){e=(k[c+4>>2]&-8)-o|0;if(e>>>0>>0)if(!e){a=c;d=0;e=c;C=85;break b}else{a=c;d=e}e=k[c+20>>2]|0;c=k[c+16+(g>>>31<<2)>>2]|0;f=(e|0)==0|(e|0)==(c|0)?f:e;e=(c|0)==0;if(e){c=f;C=81;break}else g=g<<((e^1)&1)}}while(0);if((C|0)==81){if((c|0)==0&(a|0)==0){a=2<>>12&16;q=q>>>l;i=q>>>5&8;q=q>>>i;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;a=0;c=k[32412+((i|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){i=a;h=d}else{e=c;C=85}}if((C|0)==85)while(1){C=0;c=(k[e+4>>2]&-8)-o|0;q=c>>>0>>0;c=q?c:d;a=q?e:a;e=k[e+16+(((k[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){i=a;h=c;break}else{d=c;C=85}}if((i|0)!=0?h>>>0<((k[8029]|0)-o|0)>>>0:0){e=k[8031]|0;if(i>>>0>>0)Zb();g=i+o|0;if(i>>>0>=g>>>0)Zb();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){r=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Zb();else{k[a>>2]=0;r=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Zb();b=d+12|0;if((k[b>>2]|0)!=(i|0))Zb();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;r=c;break}else Zb()}while(0);c:do if(f){b=k[i+28>>2]|0;a=32412+(b<<2)|0;do if((i|0)==(k[a>>2]|0)){k[a>>2]=r;if(!r){s=j&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=r;if(!r){s=j;break c}else break}else Zb();while(0);a=k[8031]|0;if(r>>>0>>0)Zb();k[r+24>>2]=f;b=k[i+16>>2]|0;do if(b|0)if(b>>>0>>0)Zb();else{k[r+16>>2]=b;k[b+24>>2]=r;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[8031]|0)>>>0)Zb();else{k[r+20>>2]=b;k[b+24>>2]=r;s=j;break}else s=j}else s=j;while(0);do if(h>>>0>=16){k[i+4>>2]=o|3;k[g+4>>2]=h|1;k[g+h>>2]=h;b=h>>>3;if(h>>>0<256){c=32148+(b<<1<<2)|0;a=k[8027]|0;b=1<>2]|0;if(a>>>0<(k[8031]|0)>>>0)Zb();else{x=a;y=b}}else{k[8027]=a|b;x=c;y=c+8|0}k[y>>2]=g;k[x+12>>2]=g;k[g+8>>2]=x;k[g+12>>2]=c;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;c=32412+(b<<2)|0;k[g+28>>2]=b;a=g+16|0;k[a+4>>2]=0;k[a>>2]=0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=k[c>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(h|0)){C=139;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){C=136;break}else{a=a<<1;d=b}}if((C|0)==136)if(c>>>0<(k[8031]|0)>>>0)Zb();else{k[c>>2]=g;k[g+24>>2]=d;k[g+12>>2]=g;k[g+8>>2]=g;break}else if((C|0)==139){b=d+8|0;a=k[b>>2]|0;J=k[8031]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=d;k[g+24>>2]=0;break}else Zb()}}else{J=h+o|0;k[i+4>>2]=J|3;J=i+J+4|0;k[J>>2]=k[J>>2]|1}while(0);J=i+8|0;u=K;return J|0}}}else o=-1;while(0);c=k[8029]|0;if(c>>>0>=o>>>0){b=c-o|0;a=k[8032]|0;if(b>>>0>15){J=a+o|0;k[8032]=J;k[8029]=b;k[J+4>>2]=b|1;k[J+b>>2]=b;k[a+4>>2]=o|3}else{k[8029]=0;k[8032]=0;k[a+4>>2]=c|3;J=a+c+4|0;k[J>>2]=k[J>>2]|1}J=a+8|0;u=K;return J|0}g=k[8030]|0;if(g>>>0>o>>>0){H=g-o|0;k[8030]=H;J=k[8033]|0;I=J+o|0;k[8033]=I;k[I+4>>2]=H|1;k[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}if(!(k[8145]|0)){k[8147]=4096;k[8146]=4096;k[8148]=-1;k[8149]=-1;k[8150]=0;k[8138]=0;a=n&-16^1431655768;k[n>>2]=a;k[8145]=a;a=4096}else a=k[8147]|0;h=o+48|0;i=o+47|0;f=a+i|0;e=0-a|0;j=f&e;if(j>>>0<=o>>>0){J=0;u=K;return J|0}a=k[8137]|0;if(a|0?(x=k[8135]|0,y=x+j|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;u=K;return J|0}d:do if(!(k[8138]&4)){c=k[8033]|0;e:do if(c){d=32556;while(1){a=k[d>>2]|0;if(a>>>0<=c>>>0?(w=d+4|0,(a+(k[w>>2]|0)|0)>>>0>c>>>0):0)break;a=k[d+8>>2]|0;if(!a){C=163;break e}else d=a}b=f-g&e;if(b>>>0<2147483647){a=tF(b|0)|0;if((a|0)==((k[d>>2]|0)+(k[w>>2]|0)|0)){if((a|0)!=(-1|0)){g=b;f=a;C=180;break d}}else{d=a;C=171}}else b=0}else C=163;while(0);do if((C|0)==163){c=tF(0)|0;if((c|0)!=(-1|0)?(b=c,t=k[8146]|0,v=t+-1|0,b=((v&b|0)==0?0:(v+b&0-t)-b|0)+j|0,t=k[8135]|0,v=b+t|0,b>>>0>o>>>0&b>>>0<2147483647):0){y=k[8137]|0;if(y|0?v>>>0<=t>>>0|v>>>0>y>>>0:0){b=0;break}a=tF(b|0)|0;if((a|0)==(c|0)){g=b;f=c;C=180;break d}else{d=a;C=171}}else b=0}while(0);do if((C|0)==171){c=0-b|0;if(!(h>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{g=b;f=d;C=180;break d}a=k[8147]|0;a=i-b+a&0-a;if(a>>>0>=2147483647){g=b;f=d;C=180;break d}if((tF(a|0)|0)==(-1|0)){tF(c|0)|0;b=0;break}else{g=a+b|0;f=d;C=180;break d}}while(0);k[8138]=k[8138]|4;C=178}else{b=0;C=178}while(0);if(((C|0)==178?j>>>0<2147483647:0)?(B=tF(j|0)|0,y=tF(0)|0,z=y-B|0,A=z>>>0>(o+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){g=A?z:b;f=B;C=180}if((C|0)==180){b=(k[8135]|0)+g|0;k[8135]=b;if(b>>>0>(k[8136]|0)>>>0)k[8136]=b;j=k[8033]|0;do if(j){b=32556;while(1){a=k[b>>2]|0;c=b+4|0;d=k[c>>2]|0;if((f|0)==(a+d|0)){C=190;break}e=k[b+8>>2]|0;if(!e)break;else b=e}if(((C|0)==190?(k[b+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=a>>>0:0){k[c>>2]=d+g;J=j+8|0;J=(J&7|0)==0?0:0-J&7;I=j+J|0;J=(k[8030]|0)+(g-J)|0;k[8033]=I;k[8030]=J;k[I+4>>2]=J|1;k[I+J+4>>2]=40;k[8034]=k[8149];break}b=k[8031]|0;if(f>>>0>>0){k[8031]=f;h=f}else h=b;c=f+g|0;b=32556;while(1){if((k[b>>2]|0)==(c|0)){C=198;break}a=k[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(k[b+12>>2]&8|0)==0:0){k[b>>2]=f;m=b+4|0;k[m>>2]=(k[m>>2]|0)+g;m=f+8|0;m=f+((m&7|0)==0?0:0-m&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;l=m+o|0;i=b-m-o|0;k[m+4>>2]=o|3;do if((b|0)!=(j|0)){if((b|0)==(k[8032]|0)){J=(k[8029]|0)+i|0;k[8029]=J;k[8032]=l;k[l+4>>2]=J|1;k[l+J>>2]=J;break}a=k[b+4>>2]|0;if((a&3|0)==1){g=a&-8;e=a>>>3;f:do if(a>>>0>=256){f=k[b+24>>2]|0;d=k[b+12>>2]|0;do if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=k[c>>2]|0;if(!a){a=k[d>>2]|0;if(!a){H=0;break}else c=d}while(1){d=a+20|0;e=k[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=k[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)Zb();else{k[c>>2]=0;H=a;break}}else{e=k[b+8>>2]|0;if(e>>>0>>0)Zb();a=e+12|0;if((k[a>>2]|0)!=(b|0))Zb();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;H=d;break}else Zb()}while(0);if(!f)break;a=k[b+28>>2]|0;c=32412+(a<<2)|0;do if((b|0)!=(k[c>>2]|0))if(f>>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(!H)break f;else break}else Zb();else{k[c>>2]=H;if(H|0)break;k[8028]=k[8028]&~(1<>>0>>0)Zb();k[H+24>>2]=f;a=b+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Zb();else{k[H+16>>2]=c;k[c+24>>2]=H;break}while(0);a=k[a+4>>2]|0;if(!a)break;if(a>>>0<(k[8031]|0)>>>0)Zb();else{k[H+20>>2]=a;k[a+24>>2]=H;break}}else{c=k[b+8>>2]|0;d=k[b+12>>2]|0;a=32148+(e<<1<<2)|0;do if((c|0)!=(a|0)){if(c>>>0>>0)Zb();if((k[c+12>>2]|0)==(b|0))break;Zb()}while(0);if((d|0)==(c|0)){k[8027]=k[8027]&~(1<>>0>>0)Zb();a=d+8|0;if((k[a>>2]|0)==(b|0)){E=a;break}Zb()}while(0);k[c+12>>2]=d;k[E>>2]=c}while(0);b=b+g|0;e=g+i|0}else e=i;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[l+4>>2]=e|1;k[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=32148+(b<<1<<2)|0;a=k[8027]|0;b=1<>2]|0;if(a>>>0>=(k[8031]|0)>>>0){I=a;J=b;break}Zb()}while(0);k[J>>2]=l;k[I+12>>2]=l;k[l+8>>2]=I;k[l+12>>2]=c;break}b=e>>>8;do if(!b)b=0;else{if(e>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=e>>>(b+7|0)&1|b<<1}while(0);d=32412+(b<<2)|0;k[l+28>>2]=b;a=l+16|0;k[a+4>>2]=0;k[a>>2]=0;a=k[8028]|0;c=1<>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){C=265;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){C=262;break}else{a=a<<1;d=b}}if((C|0)==262)if(c>>>0<(k[8031]|0)>>>0)Zb();else{k[c>>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}else if((C|0)==265){b=d+8|0;a=k[b>>2]|0;J=k[8031]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){k[a+12>>2]=l;k[b>>2]=l;k[l+8>>2]=a;k[l+12>>2]=d;k[l+24>>2]=0;break}else Zb()}}else{J=(k[8030]|0)+i|0;k[8030]=J;k[8033]=l;k[l+4>>2]=J|1}while(0);J=m+8|0;u=K;return J|0}b=32556;while(1){a=k[b>>2]|0;if(a>>>0<=j>>>0?(D=a+(k[b+4>>2]|0)|0,D>>>0>j>>>0):0)break;b=k[b+8>>2]|0}e=D+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=f+8|0;c=(c&7|0)==0?0:0-c&7;J=f+c|0;c=g+-40-c|0;k[8033]=J;k[8030]=c;k[J+4>>2]=c|1;k[J+c+4>>2]=40;k[8034]=k[8149];c=a+4|0;k[c>>2]=27;k[b>>2]=k[8139];k[b+4>>2]=k[8140];k[b+8>>2]=k[8141];k[b+12>>2]=k[8142];k[8139]=f;k[8140]=g;k[8142]=0;k[8141]=b;b=a+24|0;do{J=b;b=b+4|0;k[b>>2]=7}while((J+8|0)>>>0>>0);if((a|0)!=(j|0)){f=a-j|0;k[c>>2]=k[c>>2]&-2;k[j+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){c=32148+(b<<1<<2)|0;a=k[8027]|0;b=1<>2]|0;if(a>>>0<(k[8031]|0)>>>0)Zb();else{F=a;G=b}}else{k[8027]=a|b;F=c;G=c+8|0}k[G>>2]=j;k[F+12>>2]=j;k[j+8>>2]=F;k[j+12>>2]=c;break}b=f>>>8;if(b)if(f>>>0>16777215)c=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;c=14-(H|I|c)+(J<>>15)|0;c=f>>>(c+7|0)&1|c<<1}else c=0;d=32412+(c<<2)|0;k[j+28>>2]=c;k[j+20>>2]=0;k[e>>2]=0;b=k[8028]|0;a=1<>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}a=f<<((c|0)==31?0:25-(c>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(f|0)){C=292;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){C=289;break}else{a=a<<1;d=b}}if((C|0)==289)if(c>>>0<(k[8031]|0)>>>0)Zb();else{k[c>>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}else if((C|0)==292){b=d+8|0;a=k[b>>2]|0;J=k[8031]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){k[a+12>>2]=j;k[b>>2]=j;k[j+8>>2]=a;k[j+12>>2]=d;k[j+24>>2]=0;break}else Zb()}}}else{J=k[8031]|0;if((J|0)==0|f>>>0>>0)k[8031]=f;k[8139]=f;k[8140]=g;k[8142]=0;k[8036]=k[8145];k[8035]=-1;b=0;do{J=32148+(b<<1<<2)|0;k[J+12>>2]=J;k[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=f+8|0;J=(J&7|0)==0?0:0-J&7;I=f+J|0;J=g+-40-J|0;k[8033]=I;k[8030]=J;k[I+4>>2]=J|1;k[I+J+4>>2]=40;k[8034]=k[8149]}while(0);b=k[8030]|0;if(b>>>0>o>>>0){H=b-o|0;k[8030]=H;J=k[8033]|0;I=J+o|0;k[8033]=I;k[I+4>>2]=H|1;k[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}}J=zo()|0;k[J>>2]=12;J=0;u=K;return J|0}function Pq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;c=a+-8|0;g=k[8031]|0;if(c>>>0>>0)Zb();a=k[a+-4>>2]|0;b=a&3;if((b|0)==1)Zb();d=a&-8;o=c+d|0;a:do if(!(a&1)){a=k[c>>2]|0;if(!b)return;j=c+(0-a)|0;i=a+d|0;if(j>>>0>>0)Zb();if((j|0)==(k[8032]|0)){a=o+4|0;b=k[a>>2]|0;if((b&3|0)!=3){r=j;e=i;m=j;break}k[8029]=i;k[a>>2]=b&-2;k[j+4>>2]=i|1;k[j+i>>2]=i;return}d=a>>>3;if(a>>>0<256){b=k[j+8>>2]|0;c=k[j+12>>2]|0;a=32148+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)Zb();if((k[b+12>>2]|0)!=(j|0))Zb()}if((c|0)==(b|0)){k[8027]=k[8027]&~(1<>>0>>0)Zb();a=c+8|0;if((k[a>>2]|0)==(j|0))f=a;else Zb()}else f=c+8|0;k[b+12>>2]=c;k[f>>2]=b;r=j;e=i;m=j;break}f=k[j+24>>2]|0;c=k[j+12>>2]|0;do if((c|0)==(j|0)){c=j+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){h=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)Zb();else{k[b>>2]=0;h=a;break}}else{d=k[j+8>>2]|0;if(d>>>0>>0)Zb();a=d+12|0;if((k[a>>2]|0)!=(j|0))Zb();b=c+8|0;if((k[b>>2]|0)==(j|0)){k[a>>2]=c;k[b>>2]=d;h=c;break}else Zb()}while(0);if(f){a=k[j+28>>2]|0;b=32412+(a<<2)|0;do if((j|0)==(k[b>>2]|0)){k[b>>2]=h;if(!h){k[8028]=k[8028]&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(j|0)&1)<<2)>>2]=h;if(!h){r=j;e=i;m=j;break a}else break}else Zb();while(0);c=k[8031]|0;if(h>>>0>>0)Zb();k[h+24>>2]=f;a=j+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Zb();else{k[h+16>>2]=b;k[b+24>>2]=h;break}while(0);a=k[a+4>>2]|0;if(a)if(a>>>0<(k[8031]|0)>>>0)Zb();else{k[h+20>>2]=a;k[a+24>>2]=h;r=j;e=i;m=j;break}else{r=j;e=i;m=j}}else{r=j;e=i;m=j}}else{r=c;e=d;m=c}while(0);if(m>>>0>=o>>>0)Zb();a=o+4|0;b=k[a>>2]|0;if(!(b&1))Zb();if(!(b&2)){a=k[8032]|0;if((o|0)==(k[8033]|0)){q=(k[8030]|0)+e|0;k[8030]=q;k[8033]=r;k[r+4>>2]=q|1;if((r|0)!=(a|0))return;k[8032]=0;k[8029]=0;return}if((o|0)==(a|0)){q=(k[8029]|0)+e|0;k[8029]=q;k[8032]=m;k[r+4>>2]=q|1;k[m+q>>2]=q;return}e=(b&-8)+e|0;d=b>>>3;b:do if(b>>>0>=256){f=k[o+24>>2]|0;a=k[o+12>>2]|0;do if((a|0)==(o|0)){c=o+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){n=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(k[8031]|0)>>>0)Zb();else{k[b>>2]=0;n=a;break}}else{b=k[o+8>>2]|0;if(b>>>0<(k[8031]|0)>>>0)Zb();c=b+12|0;if((k[c>>2]|0)!=(o|0))Zb();d=a+8|0;if((k[d>>2]|0)==(o|0)){k[c>>2]=a;k[d>>2]=b;n=a;break}else Zb()}while(0);if(f|0){a=k[o+28>>2]|0;b=32412+(a<<2)|0;do if((o|0)==(k[b>>2]|0)){k[b>>2]=n;if(!n){k[8028]=k[8028]&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else Zb();while(0);c=k[8031]|0;if(n>>>0>>0)Zb();k[n+24>>2]=f;a=o+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Zb();else{k[n+16>>2]=b;k[b+24>>2]=n;break}while(0);a=k[a+4>>2]|0;if(a|0)if(a>>>0<(k[8031]|0)>>>0)Zb();else{k[n+20>>2]=a;k[a+24>>2]=n;break}}}else{b=k[o+8>>2]|0;c=k[o+12>>2]|0;a=32148+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(k[8031]|0)>>>0)Zb();if((k[b+12>>2]|0)!=(o|0))Zb()}if((c|0)==(b|0)){k[8027]=k[8027]&~(1<>>0<(k[8031]|0)>>>0)Zb();a=c+8|0;if((k[a>>2]|0)==(o|0))l=a;else Zb()}else l=c+8|0;k[b+12>>2]=c;k[l>>2]=b}while(0);k[r+4>>2]=e|1;k[m+e>>2]=e;if((r|0)==(k[8032]|0)){k[8029]=e;return}}else{k[a>>2]=b&-2;k[r+4>>2]=e|1;k[m+e>>2]=e}a=e>>>3;if(e>>>0<256){c=32148+(a<<1<<2)|0;b=k[8027]|0;a=1<>2]|0;if(b>>>0<(k[8031]|0)>>>0)Zb();else{p=b;q=a}}else{k[8027]=b|a;p=c;q=c+8|0}k[q>>2]=r;k[p+12>>2]=r;k[r+8>>2]=p;k[r+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=32412+(a<<2)|0;k[r+28>>2]=a;k[r+20>>2]=0;k[r+16>>2]=0;b=k[8028]|0;c=1<>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){a=124;break}c=d+16+(b>>>31<<2)|0;a=k[c>>2]|0;if(!a){a=121;break}else{b=b<<1;d=a}}if((a|0)==121)if(c>>>0<(k[8031]|0)>>>0)Zb();else{k[c>>2]=r;k[r+24>>2]=d;k[r+12>>2]=r;k[r+8>>2]=r;break}else if((a|0)==124){a=d+8|0;b=k[a>>2]|0;q=k[8031]|0;if(b>>>0>=q>>>0&d>>>0>=q>>>0){k[b+12>>2]=r;k[a>>2]=r;k[r+8>>2]=b;k[r+12>>2]=d;k[r+24>>2]=0;break}else Zb()}}else{k[8028]=b|c;k[d>>2]=r;k[r+24>>2]=d;k[r+12>>2]=r;k[r+8>>2]=r}while(0);r=(k[8035]|0)+-1|0;k[8035]=r;if(!r)a=32564;else return;while(1){a=k[a>>2]|0;if(!a)break;else a=a+8|0}k[8035]=-1;return}function Qq(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){b=Oq(b)|0;return b|0}if(b>>>0>4294967231){b=zo()|0;k[b>>2]=12;b=0;return b|0}c=Rq(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c|0){b=c+8|0;return b|0}c=Oq(b)|0;if(!c){b=0;return b|0}d=k[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;nF(c|0,a|0,(d>>>0>>0?d:b)|0)|0;Pq(a);b=c;return b|0}function Rq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=a+4|0;n=k[o>>2]|0;c=n&-8;j=a+c|0;h=k[8031]|0;d=n&3;if(!((d|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Zb();e=k[j+4>>2]|0;if(!(e&1))Zb();if(!d){if(b>>>0<256){a=0;return a|0}if(c>>>0>=(b+4|0)>>>0?(c-b|0)>>>0<=k[8147]<<1>>>0:0)return a|0;a=0;return a|0}if(c>>>0>=b>>>0){c=c-b|0;if(c>>>0<=15)return a|0;m=a+b|0;k[o>>2]=n&1|b|2;k[m+4>>2]=c|3;o=m+c+4|0;k[o>>2]=k[o>>2]|1;Sq(m,c);return a|0}if((j|0)==(k[8033]|0)){m=(k[8030]|0)+c|0;c=m-b|0;d=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}k[o>>2]=n&1|b|2;k[d+4>>2]=c|1;k[8033]=d;k[8030]=c;return a|0}if((j|0)==(k[8032]|0)){e=(k[8029]|0)+c|0;if(e>>>0>>0){a=0;return a|0}c=e-b|0;d=n&1;if(c>>>0>15){n=a+b|0;m=n+c|0;k[o>>2]=d|b|2;k[n+4>>2]=c|1;k[m>>2]=c;d=m+4|0;k[d>>2]=k[d>>2]&-2;d=n}else{k[o>>2]=d|e|2;d=a+e+4|0;k[d>>2]=k[d>>2]|1;d=0;c=0}k[8029]=c;k[8032]=d;return a|0}if(e&2|0){a=0;return a|0}l=(e&-8)+c|0;if(l>>>0>>0){a=0;return a|0}m=l-b|0;f=e>>>3;a:do if(e>>>0>=256){g=k[j+24>>2]|0;e=k[j+12>>2]|0;do if((e|0)==(j|0)){e=j+16|0;d=e+4|0;c=k[d>>2]|0;if(!c){c=k[e>>2]|0;if(!c){i=0;break}else d=e}while(1){e=c+20|0;f=k[e>>2]|0;if(f|0){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Zb();else{k[d>>2]=0;i=c;break}}else{f=k[j+8>>2]|0;if(f>>>0>>0)Zb();c=f+12|0;if((k[c>>2]|0)!=(j|0))Zb();d=e+8|0;if((k[d>>2]|0)==(j|0)){k[c>>2]=e;k[d>>2]=f;i=e;break}else Zb()}while(0);if(g|0){c=k[j+28>>2]|0;d=32412+(c<<2)|0;do if((j|0)==(k[d>>2]|0)){k[d>>2]=i;if(!i){k[8028]=k[8028]&~(1<>>0>=(k[8031]|0)>>>0){k[g+16+(((k[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=i;if(!i)break a;else break}else Zb();while(0);e=k[8031]|0;if(i>>>0>>0)Zb();k[i+24>>2]=g;c=j+16|0;d=k[c>>2]|0;do if(d|0)if(d>>>0>>0)Zb();else{k[i+16>>2]=d;k[d+24>>2]=i;break}while(0);c=k[c+4>>2]|0;if(c|0)if(c>>>0<(k[8031]|0)>>>0)Zb();else{k[i+20>>2]=c;k[c+24>>2]=i;break}}}else{d=k[j+8>>2]|0;e=k[j+12>>2]|0;c=32148+(f<<1<<2)|0;if((d|0)!=(c|0)){if(d>>>0>>0)Zb();if((k[d+12>>2]|0)!=(j|0))Zb()}if((e|0)==(d|0)){k[8027]=k[8027]&~(1<>>0>>0)Zb();c=e+8|0;if((k[c>>2]|0)==(j|0))g=c;else Zb()}else g=e+8|0;k[d+12>>2]=e;k[g>>2]=d}while(0);c=n&1;if(m>>>0<16){k[o>>2]=l|c|2;o=a+l+4|0;k[o>>2]=k[o>>2]|1;return a|0}else{n=a+b|0;k[o>>2]=c|b|2;k[n+4>>2]=m|3;o=n+m+4|0;k[o>>2]=k[o>>2]|1;Sq(n,m);return a|0}return 0}function Sq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;c=k[a+4>>2]|0;a:do if(!(c&1)){f=k[a>>2]|0;if(!(c&3))return;l=a+(0-f)|0;j=f+b|0;h=k[8031]|0;if(l>>>0>>0)Zb();if((l|0)==(k[8032]|0)){a=o+4|0;c=k[a>>2]|0;if((c&3|0)!=3){r=l;e=j;break}k[8029]=j;k[a>>2]=c&-2;k[l+4>>2]=j|1;k[l+j>>2]=j;return}d=f>>>3;if(f>>>0<256){c=k[l+8>>2]|0;b=k[l+12>>2]|0;a=32148+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)Zb();if((k[c+12>>2]|0)!=(l|0))Zb()}if((b|0)==(c|0)){k[8027]=k[8027]&~(1<>>0>>0)Zb();a=b+8|0;if((k[a>>2]|0)==(l|0))g=a;else Zb()}else g=b+8|0;k[c+12>>2]=b;k[g>>2]=c;r=l;e=j;break}f=k[l+24>>2]|0;b=k[l+12>>2]|0;do if((b|0)==(l|0)){b=l+16|0;c=b+4|0;a=k[c>>2]|0;if(!a){a=k[b>>2]|0;if(!a){i=0;break}else c=b}while(1){b=a+20|0;d=k[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=k[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)Zb();else{k[c>>2]=0;i=a;break}}else{d=k[l+8>>2]|0;if(d>>>0>>0)Zb();a=d+12|0;if((k[a>>2]|0)!=(l|0))Zb();c=b+8|0;if((k[c>>2]|0)==(l|0)){k[a>>2]=b;k[c>>2]=d;i=b;break}else Zb()}while(0);if(f){a=k[l+28>>2]|0;c=32412+(a<<2)|0;do if((l|0)==(k[c>>2]|0)){k[c>>2]=i;if(!i){k[8028]=k[8028]&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(l|0)&1)<<2)>>2]=i;if(!i){r=l;e=j;break a}else break}else Zb();while(0);b=k[8031]|0;if(i>>>0>>0)Zb();k[i+24>>2]=f;a=l+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Zb();else{k[i+16>>2]=c;k[c+24>>2]=i;break}while(0);a=k[a+4>>2]|0;if(a)if(a>>>0<(k[8031]|0)>>>0)Zb();else{k[i+20>>2]=a;k[a+24>>2]=i;r=l;e=j;break}else{r=l;e=j}}else{r=l;e=j}}else{r=a;e=b}while(0);g=k[8031]|0;if(o>>>0>>0)Zb();a=o+4|0;c=k[a>>2]|0;if(!(c&2)){a=k[8032]|0;if((o|0)==(k[8033]|0)){q=(k[8030]|0)+e|0;k[8030]=q;k[8033]=r;k[r+4>>2]=q|1;if((r|0)!=(a|0))return;k[8032]=0;k[8029]=0;return}if((o|0)==(a|0)){q=(k[8029]|0)+e|0;k[8029]=q;k[8032]=r;k[r+4>>2]=q|1;k[r+q>>2]=q;return}e=(c&-8)+e|0;d=c>>>3;b:do if(c>>>0>=256){f=k[o+24>>2]|0;b=k[o+12>>2]|0;do if((b|0)==(o|0)){b=o+16|0;c=b+4|0;a=k[c>>2]|0;if(!a){a=k[b>>2]|0;if(!a){n=0;break}else c=b}while(1){b=a+20|0;d=k[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=k[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)Zb();else{k[c>>2]=0;n=a;break}}else{d=k[o+8>>2]|0;if(d>>>0>>0)Zb();a=d+12|0;if((k[a>>2]|0)!=(o|0))Zb();c=b+8|0;if((k[c>>2]|0)==(o|0)){k[a>>2]=b;k[c>>2]=d;n=b;break}else Zb()}while(0);if(f|0){a=k[o+28>>2]|0;c=32412+(a<<2)|0;do if((o|0)==(k[c>>2]|0)){k[c>>2]=n;if(!n){k[8028]=k[8028]&~(1<>>0>=(k[8031]|0)>>>0){k[f+16+(((k[f+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else Zb();while(0);b=k[8031]|0;if(n>>>0>>0)Zb();k[n+24>>2]=f;a=o+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Zb();else{k[n+16>>2]=c;k[c+24>>2]=n;break}while(0);a=k[a+4>>2]|0;if(a|0)if(a>>>0<(k[8031]|0)>>>0)Zb();else{k[n+20>>2]=a;k[a+24>>2]=n;break}}}else{c=k[o+8>>2]|0;b=k[o+12>>2]|0;a=32148+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)Zb();if((k[c+12>>2]|0)!=(o|0))Zb()}if((b|0)==(c|0)){k[8027]=k[8027]&~(1<>>0>>0)Zb();a=b+8|0;if((k[a>>2]|0)==(o|0))m=a;else Zb()}else m=b+8|0;k[c+12>>2]=b;k[m>>2]=c}while(0);k[r+4>>2]=e|1;k[r+e>>2]=e;if((r|0)==(k[8032]|0)){k[8029]=e;return}}else{k[a>>2]=c&-2;k[r+4>>2]=e|1;k[r+e>>2]=e}a=e>>>3;if(e>>>0<256){b=32148+(a<<1<<2)|0;c=k[8027]|0;a=1<>2]|0;if(c>>>0<(k[8031]|0)>>>0)Zb();else{p=c;q=a}}else{k[8027]=c|a;p=b;q=b+8|0}k[q>>2]=r;k[p+12>>2]=r;k[r+8>>2]=p;k[r+12>>2]=b;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=32412+(a<<2)|0;k[r+28>>2]=a;k[r+20>>2]=0;k[r+16>>2]=0;c=k[8028]|0;b=1<>2]=r;k[r+24>>2]=d;k[r+12>>2]=r;k[r+8>>2]=r;return}c=e<<((a|0)==31?0:25-(a>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){a=121;break}b=d+16+(c>>>31<<2)|0;a=k[b>>2]|0;if(!a){a=118;break}else{c=c<<1;d=a}}if((a|0)==118){if(b>>>0<(k[8031]|0)>>>0)Zb();k[b>>2]=r;k[r+24>>2]=d;k[r+12>>2]=r;k[r+8>>2]=r;return}else if((a|0)==121){a=d+8|0;c=k[a>>2]|0;q=k[8031]|0;if(!(c>>>0>=q>>>0&d>>>0>=q>>>0))Zb();k[c+12>>2]=r;k[a>>2]=r;k[r+8>>2]=c;k[r+12>>2]=d;k[r+24>>2]=0;return}}function Tq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:while(1){n=b;o=b+-4|0;while(1){m=a;b:while(1){l=m;d=n-l|0;e=d>>2;a=m+4|0;switch(e|0){case 1:case 0:break a;case 2:{r=5;break a}case 3:{r=7;break a}case 4:{r=8;break a}case 5:{r=9;break a}default:{}}if((d|0)<124){r=11;break a}h=m+(((e|0)/2|0)<<2)|0;if((d|0)>3996){d=(e|0)/4|0;d=Wq(m,m+(d<<2)|0,h,h+(d<<2)|0,o,c)|0}else d=Uq(m,h,o,c)|0;i=k[m>>2]|0;f=k[h>>2]|0;if((i|0)<(f|0)){e=o;break}else e=o;while(1){e=e+-4|0;if((m|0)==(e|0))break;g=k[e>>2]|0;if((g|0)<(f|0)){r=28;break b}}f=k[o>>2]|0;if((i|0)>=(f|0)){d=a;while(1){if((d|0)==(o|0))break a;e=k[d>>2]|0;a=d+4|0;if((i|0)<(e|0))break;else d=a}k[d>>2]=f;k[o>>2]=e}if((a|0)==(o|0))break a;else d=o;while(1){h=k[m>>2]|0;while(1){f=k[a>>2]|0;g=a+4|0;if((h|0)<(f|0))break;else a=g}do{d=d+-4|0;e=k[d>>2]|0}while((h|0)<(e|0));if(a>>>0>=d>>>0){m=a;continue b}k[a>>2]=e;k[d>>2]=f;a=g}}if((r|0)==28){r=0;k[m>>2]=g;k[e>>2]=i;d=d+1|0}c:do if(a>>>0>>0){j=h;while(1){i=k[j>>2]|0;while(1){g=k[a>>2]|0;h=a+4|0;if((g|0)<(i|0))a=h;else break}do{e=e+-4|0;f=k[e>>2]|0}while((f|0)>=(i|0));if(a>>>0>e>>>0){e=j;f=a;break c}k[a>>2]=f;k[e>>2]=g;j=(j|0)==(a|0)?e:j;a=h;d=d+1|0}}else{e=h;f=a}while(0);if((f|0)!=(e|0)?(p=k[e>>2]|0,q=k[f>>2]|0,(p|0)<(q|0)):0){k[f>>2]=p;k[e>>2]=q;a=d+1|0}else a=d;if(!a){d=Yq(m,f,c)|0;a=f+4|0;if(Yq(a,b,c)|0){r=45;break}if(d)continue}else a=f+4|0;j=f;if((j-l|0)>=(n-j|0)){r=44;break}Tq(m,f,c)}if((r|0)==44){r=0;Tq(a,b,c);a=m;b=f;continue}else if((r|0)==45){r=0;if(d)break;else{a=m;b=f;continue}}}if((r|0)==5){b=k[o>>2]|0;a=k[m>>2]|0;if((b|0)<(a|0)){k[m>>2]=b;k[o>>2]=a}}else if((r|0)==7)Uq(m,a,o,c)|0;else if((r|0)==8)Vq(m,a,m+8|0,o,c)|0;else if((r|0)==9)Wq(m,a,m+8|0,m+12|0,o,c)|0;else if((r|0)==11)Xq(m,b,c);return}function Uq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=k[b>>2]|0;g=k[a>>2]|0;e=k[c>>2]|0;f=(e|0)<(d|0);do if((d|0)<(g|0)){if(f){k[a>>2]=e;k[c>>2]=g;d=1;break}k[a>>2]=d;k[b>>2]=g;d=k[c>>2]|0;if((d|0)<(g|0)){k[b>>2]=d;k[c>>2]=g;d=2}else d=1}else if(f){k[b>>2]=e;k[c>>2]=d;e=k[b>>2]|0;d=k[a>>2]|0;if((e|0)<(d|0)){k[a>>2]=e;k[b>>2]=d;d=2}else d=1}else d=0;while(0);return d|0}function Vq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;e=Uq(a,b,c,e)|0;f=k[d>>2]|0;g=k[c>>2]|0;if((f|0)<(g|0)){k[c>>2]=f;k[d>>2]=g;d=e+1|0;f=k[c>>2]|0;g=k[b>>2]|0;if((f|0)<(g|0)){k[b>>2]=f;k[c>>2]=g;f=k[b>>2]|0;g=k[a>>2]|0;if((f|0)<(g|0)){k[a>>2]=f;k[b>>2]=g;e=e+3|0}else e=e+2|0}else e=d}return e|0}function Wq(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 g=0,h=0;h=Vq(a,b,c,d,f)|0;f=k[e>>2]|0;g=k[d>>2]|0;if((f|0)<(g|0)){k[d>>2]=f;k[e>>2]=g;f=h+1|0;g=k[d>>2]|0;e=k[c>>2]|0;if((g|0)<(e|0)){k[c>>2]=g;k[d>>2]=e;f=h+2|0;g=k[c>>2]|0;e=k[b>>2]|0;if((g|0)<(e|0)){k[b>>2]=g;k[c>>2]=e;f=k[b>>2]|0;g=k[a>>2]|0;if((f|0)<(g|0)){k[a>>2]=f;k[b>>2]=g;f=h+4|0}else f=h+3|0}}}else f=h;return f|0}function Xq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;Uq(a,a+4|0,g,c)|0;f=a+12|0;c=g;while(1){if((f|0)==(b|0))break;g=k[f>>2]|0;e=k[c>>2]|0;if((g|0)<(e|0)){d=f;while(1){k[d>>2]=e;if((c|0)==(a|0)){c=a;break}d=c+-4|0;e=k[d>>2]|0;if((g|0)>=(e|0))break;else{h=c;c=d;d=h}}k[c>>2]=g}c=f;f=f+4|0}return}function Yq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=b+-4|0;d=a+8|0;switch(b-a>>2|0){case 1:case 0:{c=1;break}case 2:{c=k[f>>2]|0;d=k[a>>2]|0;if((c|0)<(d|0)){k[a>>2]=c;k[f>>2]=d;c=1}else c=1;break}case 3:{Uq(a,e,f,c)|0;c=1;break}case 4:{Vq(a,e,d,f,c)|0;c=1;break}case 5:{Wq(a,e,d,a+12|0,f,c)|0;c=1;break}default:{Uq(a,e,d,c)|0;h=a+12|0;c=0;while(1){if((h|0)==(b|0)){d=1;c=0;break}g=k[h>>2]|0;f=k[d>>2]|0;if((g|0)<(f|0)){e=h;while(1){k[e>>2]=f;if((d|0)==(a|0)){d=a;break}e=d+-4|0;f=k[e>>2]|0;if((g|0)>=(f|0))break;else{i=d;d=e;e=i}}k[d>>2]=g;c=c+1|0;if((c|0)==8){d=0;c=(h+4|0)==(b|0);break}}d=h;h=h+4|0}c=c|d}}return c|0}function Zq(a){a=a|0;_q(a);return}function _q(a){a=a|0;k[a>>2]=7476;$q(a,0);os(a+28|0);Pq(k[a+32>>2]|0);Pq(k[a+36>>2]|0);Pq(k[a+48>>2]|0);Pq(k[a+60>>2]|0);return}function $q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=a+32|0;e=a+36|0;c=k[a+40>>2]|0;while(1){if(!c)break;f=c+-1|0;cd[k[(k[d>>2]|0)+(f<<2)>>2]&63](b,a,k[(k[e>>2]|0)+(f<<2)>>2]|0);c=f}return}function ar(a){a=a|0;_q(a);EA(a);return}function br(a){a=a|0;k[a>>2]=7492;os(a+4|0);return}function cr(a){a=a|0;br(a);EA(a);return}function dr(a,b){a=a|0;b=b|0;return}function er(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function fr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;f=a;k[f>>2]=0;k[f+4>>2]=0;f=a+8|0;k[f>>2]=-1;k[f+4>>2]=-1;return}function gr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=a;k[d>>2]=0;k[d+4>>2]=0;d=a+8|0;k[d>>2]=-1;k[d+4>>2]=-1;return}function hr(a){a=a|0;return 0}function ir(a){a=a|0;return 0}function jr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;pr()|0;f=a+12|0;g=a+16|0;e=0;while(1){if((e|0)>=(c|0))break;d=k[f>>2]|0;if(d>>>0<(k[g>>2]|0)>>>0){k[f>>2]=d+1;d=i[d>>0]|0}else{d=Pc[k[(k[a>>2]|0)+40>>2]&127](a)|0;if((d|0)==-1)break;d=sr(d)|0}i[b>>0]=d;e=e+1|0;b=b+1|0}return e|0}function kr(a){a=a|0;return pr()|0}function lr(a){a=a|0;var b=0;b=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;if((b|0)==(pr()|0))a=pr()|0;else{b=a+12|0;a=k[b>>2]|0;k[b>>2]=a+1;a=qr(i[a>>0]|0)|0}return a|0}function mr(a,b){a=a|0;b=b|0;return pr()|0}function nr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;g=pr()|0;h=a+24|0;j=a+28|0;d=0;while(1){if((d|0)>=(c|0))break;e=k[h>>2]|0;f=k[j>>2]|0;if(e>>>0>>0){f=f-e|0;l=c-d|0;f=(l|0)<(f|0)?l:f;rr(e,b,f)|0;k[h>>2]=(k[h>>2]|0)+f;b=b+f|0;d=f+d|0;continue}f=k[(k[a>>2]|0)+52>>2]|0;l=qr(i[b>>0]|0)|0;if((Yc[f&63](a,l)|0)==(g|0))break;b=b+1|0;d=d+1|0}return d|0}function or(a,b){a=a|0;b=b|0;return pr()|0}function pr(){return -1}function qr(a){a=a|0;return a&255|0}function rr(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)nF(a|0,b|0,c|0)|0;return a|0}function sr(a){a=a|0;return a&255|0}function tr(){return -1}function ur(a){a=a|0;return a|0}function vr(a,b,c){a=a|0;b=b|0;c=c|0;if(c)eq(a,b,c)|0;return a|0}function wr(a){a=a|0;Ar(a,7588);Zq(a+4|0);return}function xr(a){a=a|0;wr(a);EA(a);return}function yr(a){a=a|0;wr(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function zr(a){a=a|0;xr(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function Ar(a,b){a=a|0;b=b|0;return}function Br(a){a=a|0;return Rp(a)|0}function Cr(a,b){a=a|0;b=b|0;k[a+16>>2]=(k[a+24>>2]|0)==0|b;return}function Dr(a,b){a=a|0;b=b|0;var c=0;k[a+24>>2]=b;k[a+16>>2]=(b|0)==0&1;k[a+20>>2]=0;k[a+4>>2]=4098;k[a+12>>2]=0;k[a+8>>2]=6;c=a+28|0;b=a+32|0;a=b+40|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));uA(c);return}function Er(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function Fr(a){a=a|0;var b=0,c=0;c=u;u=u+16|0;b=c;sA(b,a+28|0);u=c;return k[b>>2]|0}function Gr(a,b){a=a|0;b=b|0;return (a|0)==(b|0)|0}function Hr(a){a=a|0;k[a>>2]=7492;uA(a+4|0);a=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function Ir(a){a=a|0;var b=0,c=0,d=0;c=u;u=u+16|0;b=c;if(k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0){Jr(b,a);if(i[b>>0]|0?(d=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0,(Pc[k[(k[d>>2]|0)+24>>2]&127](d)|0)==-1):0){d=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;Cr(d,k[d+16>>2]|1)}Kr(b)}u=c;return a|0}function Jr(a,b){a=a|0;b=b|0;i[a>>0]=0;k[a+4>>2]=b;b=b+(k[(k[b>>2]|0)+-12>>2]|0)|0;if(!(k[b+16>>2]|0)){b=k[b+72>>2]|0;if(b|0)Ir(b)|0;i[a>>0]=1}return}function Kr(a){a=a|0;var b=0;a=a+4|0;b=k[a>>2]|0;b=b+(k[(k[b>>2]|0)+-12>>2]|0)|0;if((((k[b+24>>2]|0?(k[b+16>>2]|0)==0:0)?k[b+4>>2]&8192|0:0)?!(Pa()|0):0)?(b=k[a>>2]|0,b=k[b+(k[(k[b>>2]|0)+-12>>2]|0)+24>>2]|0,(Pc[k[(k[b>>2]|0)+24>>2]&127](b)|0)==-1):0){b=k[a>>2]|0;b=b+(k[(k[b>>2]|0)+-12>>2]|0)|0;Cr(b,k[b+16>>2]|1)}return}function Lr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=u;u=u+16|0;d=l+12|0;h=l+8|0;j=l;Jr(j,a);if(i[j>>0]|0){e=Fr(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[d>>2]=e;e=ns(d,32676)|0;os(d);f=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;g=k[f+24>>2]|0;m=pr()|0;c=f+76|0;if(Er(m,k[c>>2]|0)|0){m=Fr(f)|0;k[d>>2]=m;m=ns(d,32620)|0;m=Yc[k[(k[m>>2]|0)+28>>2]&63](m,32)|0;os(d);m=m<<24>>24;k[c>>2]=m;c=m}else c=k[c>>2]|0;m=k[(k[e>>2]|0)+16>>2]|0;k[h>>2]=g;k[d>>2]=k[h>>2];if(!(bd[m&31](e,d,f,c&255,b)|0)){m=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;Cr(m,k[m+16>>2]|5)}}Kr(j);u=l;return a|0}function Mr(a){a=a|0;Ur(a);return}function Nr(a){a=a|0;Mr(a);EA(a);return}function Or(a){a=a|0;if(a|0)Mc[k[(k[a>>2]|0)+4>>2]&127](a);return}function Pr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a=b;while(1){if((d|0)==(e|0)){g=7;break}if((a|0)==(c|0)){a=-1;break}b=i[a>>0]|0;f=i[d>>0]|0;if(b<<24>>24>24){a=-1;break}if(f<<24>>24>24){a=1;break}d=d+1|0;a=a+1|0}if((g|0)==7)a=(a|0)!=(c|0)&1;return a|0}function Qr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;Sr(a,c,d);return}function Rr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=0;while(1){if((b|0)==(c|0))break;d=(i[b>>0]|0)+(a<<4)|0;e=d&-268435456;a=(e>>>24|e)^d;b=b+1|0}return a|0}function Sr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;e=b;h=j;d=c-e|0;if(d>>>0<=4294967279)if(d>>>0<11){i[a+11>>0]=d;g=a}else f=5;else{HA(a);f=5}if((f|0)==5){f=d+16&-16;g=CA(f)|0;k[a>>2]=g;k[a+8>>2]=f|-2147483648;k[a+4>>2]=d}d=c-e|0;a=g;while(1){if((b|0)==(c|0))break;Tr(a,b);b=b+1|0;a=a+1|0}i[h>>0]=0;Tr(g+d|0,h);u=j;return}function Tr(a,b){a=a|0;b=b|0;i[a>>0]=i[b>>0]|0;return}function Ur(a){a=a|0;return}function Vr(a){a=a|0;Ur(a);return}function Wr(a){a=a|0;Vr(a);EA(a);return}function Xr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a=b;while(1){if((d|0)==(e|0)){g=7;break}if((a|0)==(c|0)){a=-1;break}b=k[a>>2]|0;f=k[d>>2]|0;if((b|0)<(f|0)){a=-1;break}if((f|0)<(b|0)){a=1;break}d=d+4|0;a=a+4|0}if((g|0)==7)a=(a|0)!=(c|0)&1;return a|0}function Yr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;_r(a,c,d);return}function Zr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=0;while(1){if((b|0)==(c|0))break;d=(k[b>>2]|0)+(a<<4)|0;e=d&-268435456;a=(e>>>24|e)^d;b=b+4|0}return a|0}function _r(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;g=j;h=c-b>>2;if(h>>>0<=1073741807)if(h>>>0<2){i[a+8+3>>0]=h;e=b;f=a}else d=5;else{HA(a);d=5}do if((d|0)==5){d=h+4&-4;if(d>>>0>1073741823)Oa(28551,28588,1734,28688);else{f=CA(d<<2)|0;k[a>>2]=f;k[a+8>>2]=d|-2147483648;k[a+4>>2]=h;e=b;break}}while(0);while(1){if((e|0)==(c|0))break;$r(f,e);e=e+4|0;f=f+4|0}k[g>>2]=0;$r(f,g);u=j;return}function $r(a,b){a=a|0;b=b|0;k[a>>2]=k[b>>2];return}function as(a){a=a|0;Ur(a);return}function bs(a){a=a|0;Ur(a);EA(a);return}function cs(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;g=o+40|0;n=o+16|0;h=o+8|0;j=o+12|0;l=o+4|0;m=o;if(!(k[d+4>>2]&1)){k[h>>2]=-1;m=k[(k[a>>2]|0)+16>>2]|0;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[n>>2]=k[j>>2];k[g>>2]=k[l>>2];n=Oc[m&63](a,n,g,d,e,h)|0;k[b>>2]=n;switch(k[h>>2]|0){case 0:{i[f>>0]=0;break}case 1:{i[f>>0]=1;break}default:{i[f>>0]=1;k[e>>2]=4}}g=k[b>>2]|0}else{l=Fr(d)|0;k[g>>2]=l;l=ns(g,32620)|0;os(g);a=Fr(d)|0;k[g>>2]=a;a=ns(g,32636)|0;os(g);Nc[k[(k[a>>2]|0)+24>>2]&63](n,a);Nc[k[(k[a>>2]|0)+28>>2]&63](n+12|0,a);k[m>>2]=k[c>>2];a=n+24|0;k[g>>2]=k[m>>2];g=(Vs(b,g,n,a,l,e,1)|0)==(n|0)&1;i[f>>0]=g;g=k[b>>2]|0;do{a=a+-12|0;NA(a)}while((a|0)!=(n|0))}u=o;return g|0}function ds(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Ts(a,i,h,d,e,f)|0;u=g;return f|0}function es(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Rs(a,i,h,d,e,f)|0;u=g;return f|0}function fs(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Ps(a,i,h,d,e,f)|0;u=g;return f|0}function gs(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Ns(a,i,h,d,e,f)|0;u=g;return f|0}function hs(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Ls(a,i,h,d,e,f)|0;u=g;return f|0}function is(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Hs(a,i,h,d,e,f)|0;u=g;return f|0}function js(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Fs(a,i,h,d,e,f)|0;u=g;return f|0}function ks(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=Ds(a,i,h,d,e,f)|0;u=g;return f|0}function ls(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 g=0,h=0,i=0,j=0,l=0;g=u;u=u+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];f=ys(a,i,h,d,e,f)|0;u=g;return f|0}function ms(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;z=u;u=u+240|0;w=z;t=z+204|0;x=z+192|0;y=z+180|0;v=z+176|0;q=z+16|0;r=z+8|0;s=z+4|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[x+(a<<2)>>2]=0;a=a+1|0}a=Fr(d)|0;k[y>>2]=a;a=ns(y,32620)|0;Rc[k[(k[a>>2]|0)+32>>2]&7](a,26075,26101,t)|0;os(y);k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[y+(a<<2)>>2]=0;a=a+1|0}p=y+11|0;o=y+8|0;if((i[p>>0]|0)<0)a=(k[o>>2]&2147483647)+-1|0;else a=10;UA(y,a,0);a=(i[p>>0]|0)<0?k[y>>2]|0:y;k[v>>2]=a;k[r>>2]=q;k[s>>2]=0;n=y+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;A=22;break}}else A=22;while(0);if((A|0)==22){A=0;if(j){g=0;break}else g=0}d=i[p>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[v>>2]|0)==(a+d|0)){UA(y,d<<1,0);if((i[p>>0]|0)<0)a=(k[o>>2]&2147483647)+-1|0;else a=10;UA(y,a,0);a=(i[p>>0]|0)<0?k[y>>2]|0:y;k[v>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(ps(d&255,16,a,v,s,0,x,q,r,t)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}UA(y,(k[v>>2]|0)-a|0,0);t=(i[p>>0]|0)<0?k[y>>2]|0:y;v=qs()|0;k[w>>2]=f;if((rs(t,v,26108,w)|0)!=1)k[e>>2]=4;if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{A=51;break}else{k[c>>2]=0;A=49;break}}else A=49;while(0);if((A|0)==49?d:0)A=51;if((A|0)==51)k[e>>2]=k[e>>2]|2;A=k[b>>2]|0;NA(y);NA(x);u=z;return A|0}function ns(a,b){a=a|0;b=b|0;a=k[a>>2]|0;return ts(a,ss(b)|0)|0}function os(a){a=a|0;zA(k[a>>2]|0)|0;return}function ps(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0;o=k[d>>2]|0;p=(o|0)==(c|0);do if(p){m=(i[l+24>>0]|0)==a<<24>>24;if(!m?(i[l+25>>0]|0)!=a<<24>>24:0){n=5;break}k[d>>2]=c+1;i[c>>0]=m?43:45;k[e>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=i[g+11>>0]|0;if(a<<24>>24==f<<24>>24?((n<<24>>24<0?k[g+4>>2]|0:n&255)|0)!=0:0){m=k[j>>2]|0;if((m-h|0)>=160){m=0;break}d=k[e>>2]|0;k[j>>2]=m+4;k[m>>2]=d;k[e>>2]=0;m=0;break}g=l+26|0;f=0;while(1){m=l+f|0;if((f|0)==26){m=g;break}if((i[m>>0]|0)==a<<24>>24)break;else f=f+1|0}m=m-l|0;if((m|0)>23)m=-1;else{f=26075+m|0;switch(b|0){case 10:case 8:{if((m|0)>=(b|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-c|0)>=3){m=-1;break a}if((i[o+-1>>0]|0)!=48){m=-1;break a}k[e>>2]=0;m=i[f>>0]|0;k[d>>2]=o+1;i[o>>0]=m;m=0;break a}break}default:{}}m=i[f>>0]|0;k[d>>2]=o+1;i[o>>0]=m;k[e>>2]=(k[e>>2]|0)+1;m=0}}while(0);return m|0}function qs(){var a=0;if((i[31320]|0)==0?aF(31320)|0:0){a=aq(2147483647,26111,0)|0;k[8157]=a}return k[8157]|0}function rs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=u;u=u+16|0;f=e;k[f>>2]=d;d=cq(b)|0;b=tq(a,c,f)|0;if(d|0)cq(d)|0;u=e;return b|0}function ss(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=u;u=u+48|0;b=e+32|0;c=e+24|0;d=e;f=e+16|0;k[f>>2]=97;k[f+4>>2]=0;k[b>>2]=k[f>>2];k[b+4>>2]=k[f+4>>2];vs(d,b,a);if((k[a>>2]|0)!=-1){k[b>>2]=d;k[c>>2]=b;BA(a,c,98)}u=e;return (k[a+4>>2]|0)+-1|0}function ts(a,b){a=a|0;b=b|0;return k[(k[a+8>>2]|0)+(b<<2)>>2]|0}function us(a){a=a|0;var b=0;b=k[8158]|0;k[8158]=b+1;k[a+4>>2]=b+1;return}function vs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[b>>2]|0;b=k[b+4>>2]|0;k[a>>2]=c;k[a+4>>2]=d;k[a+8>>2]=b;return}function ws(a){a=a|0;xs(k[k[a>>2]>>2]|0);return}function xs(a){a=a|0;var b=0,c=0,d=0;b=k[a+4>>2]|0;d=k[a+8>>2]|0;c=(k[a>>2]|0)+(d>>1)|0;if(!(d&1))a=b;else a=k[(k[c>>2]|0)+b>>2]|0;Mc[a&127](c);return}function ys(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+240|0;s=E+200|0;t=E+199|0;v=E+198|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+197|0;r=E+196|0;zs(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}o=C+11|0;q=C+8|0;if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(As(d&255,A,r,a,w,i[t>>0]|0,i[v>>0]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Bs(a,k[w>>2]|0,e);p[f>>3]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function zs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=u;u=u+16|0;g=f;b=Fr(b)|0;k[g>>2]=b;b=ns(g,32620)|0;Rc[k[(k[b>>2]|0)+32>>2]&7](b,26075,26107,c)|0;c=ns(g,32636)|0;b=Pc[k[(k[c>>2]|0)+12>>2]&127](c)|0;i[d>>0]=b;d=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;i[e>>0]=d;Nc[k[(k[c>>2]|0)+20>>2]&63](a,c);os(g);u=f;return}function As(a,b,c,d,e,f,g,h,j,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0;p=j;a:do if(a<<24>>24==f<<24>>24)if(i[b>>0]|0){i[b>>0]=0;c=k[e>>2]|0;k[e>>2]=c+1;i[c>>0]=46;e=i[h+11>>0]|0;if(((e<<24>>24<0?k[h+4>>2]|0:e&255)|0)!=0?(o=k[l>>2]|0,(o-p|0)<160):0){j=k[m>>2]|0;k[l>>2]=o+4;k[o>>2]=j;j=0}else j=0}else j=-1;else{if(a<<24>>24==g<<24>>24?(g=i[h+11>>0]|0,(g<<24>>24<0?k[h+4>>2]|0:g&255)|0):0){if(!(i[b>>0]|0)){j=-1;break}j=k[l>>2]|0;if((j-p|0)>=160){j=0;break}e=k[m>>2]|0;k[l>>2]=j+4;k[j>>2]=e;k[m>>2]=0;j=0;break}f=n+32|0;o=0;while(1){j=n+o|0;if((o|0)==32){j=f;break}if((i[j>>0]|0)==a<<24>>24)break;else o=o+1|0}o=j-n|0;if((o|0)>31)j=-1;else{f=i[26075+o>>0]|0;switch(o|0){case 24:case 25:{j=k[e>>2]|0;if((j|0)!=(d|0)?(i[j+-1>>0]&95)!=(i[c>>0]&127):0){j=-1;break a}k[e>>2]=j+1;i[j>>0]=f;j=0;break a}case 23:case 22:{i[c>>0]=80;j=k[e>>2]|0;k[e>>2]=j+1;i[j>>0]=f;j=0;break a}default:{j=f&95;if((((j|0)==(i[c>>0]|0)?(i[c>>0]=j|128,i[b>>0]|0):0)?(i[b>>0]=0,c=i[h+11>>0]|0,(c<<24>>24<0?k[h+4>>2]|0:c&255)|0):0)?(q=k[l>>2]|0,(q-p|0)<160):0){c=k[m>>2]|0;k[l>>2]=q+4;k[q>>2]=c}l=k[e>>2]|0;k[e>>2]=l+1;i[l>>0]=f;if((o|0)>21){j=0;break a}k[m>>2]=(k[m>>2]|0)+1;j=0;break a}}}}while(0);return j|0}function Bs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h;if((a|0)==(b|0)){k[c>>2]=4;d=0.0}else{f=zo()|0;f=k[f>>2]|0;i=zo()|0;k[i>>2]=0;d=+Lq(a,e,qs()|0);a=zo()|0;a=k[a>>2]|0;if(!a){i=zo()|0;k[i>>2]=f}if((k[e>>2]|0)==(b|0)){if((a|0)==34)g=6}else{d=0.0;g=6}if((g|0)==6)k[c>>2]=4}u=h;return +d}function Cs(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,j=0,l=0,m=0;j=i[a+11>>0]|0;h=j<<24>>24<0;g=a+4|0;e=k[g>>2]|0;j=j&255;do if((h?e:j)|0){if((b|0)!=(c|0)){e=c;f=b;while(1){e=e+-4|0;if(f>>>0>=e>>>0)break;m=k[f>>2]|0;k[f>>2]=k[e>>2];k[e>>2]=m;f=f+4|0}e=k[g>>2]|0}m=h?k[a>>2]|0:a;c=c+-4|0;a=m+(h?e:j)|0;e=m;while(1){f=i[e>>0]|0;g=f<<24>>24>0&f<<24>>24!=127;if(b>>>0>=c>>>0)break;if(g?(f<<24>>24|0)!=(k[b>>2]|0):0){l=10;break}b=b+4|0;e=(a-e|0)>1?e+1|0:e}if((l|0)==10){k[d>>2]=4;break}if(g?((k[c>>2]|0)+-1|0)>>>0>=f<<24>>24>>>0:0)k[d>>2]=4}while(0);return}function Ds(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;E=u;u=u+240|0;s=E+200|0;t=E+199|0;v=E+198|0;D=E+184|0;C=E+172|0;w=E+168|0;x=E+8|0;y=E+4|0;z=E;A=E+197|0;r=E+196|0;zs(D,d,s,t,v);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}o=C+11|0;q=C+8|0;if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a;k[y>>2]=x;k[z>>2]=0;i[A>>0]=1;i[r>>0]=69;n=C+4|0;h=k[b>>2]|0;g=h;a:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(Er(d,pr()|0)|0){k[b>>2]=0;m=0;h=0;j=1}else{m=g;j=0}}else{m=0;h=0;j=1}g=k[c>>2]|0;do if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0))d=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else d=qr(i[d>>0]|0)|0;if(!(Er(d,pr()|0)|0))if(j)break;else break a;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(j){g=0;break}else g=0}d=i[o>>0]|0;d=d<<24>>24<0?k[n>>2]|0:d&255;if((k[w>>2]|0)==(a+d|0)){UA(C,d<<1,0);if((i[o>>0]|0)<0)a=(k[q>>2]&2147483647)+-1|0;else a=10;UA(C,a,0);a=(i[o>>0]|0)<0?k[C>>2]|0:C;k[w>>2]=a+d}j=m+12|0;d=k[j>>2]|0;l=m+16|0;if((d|0)==(k[l>>2]|0))d=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0;else d=qr(i[d>>0]|0)|0;if(As(d&255,A,r,a,w,i[t>>0]|0,i[v>>0]|0,D,x,y,z,s)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){Pc[k[(k[m>>2]|0)+40>>2]&127](m)|0;g=m;continue}else{k[j>>2]=d+1;qr(i[d>>0]|0)|0;g=m;continue}}v=i[D+11>>0]|0;if(!((i[A>>0]|0)==0?1:((v<<24>>24<0?k[D+4>>2]|0:v&255)|0)==0)?(B=k[y>>2]|0,(B-x|0)<160):0){A=k[z>>2]|0;k[y>>2]=B+4;k[B>>2]=A}G=+Es(a,k[w>>2]|0,e);p[f>>3]=G;Cs(D,x,k[y>>2]|0,e);if(m){a=k[m+12>>2]|0;if((a|0)==(k[m+16>>2]|0))a=Pc[k[(k[h>>2]|0)+36>>2]&127](m)|0;else a=qr(i[a>>0]|0)|0;if(Er(a,pr()|0)|0){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Pc[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=qr(i[a>>0]|0)|0;if(!(Er(a,pr()|0)|0))if(d)break;else{F=49;break}else{k[c>>2]=0;F=47;break}}else F=47;while(0);if((F|0)==47?d:0)F=49;if((F|0)==49)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;NA(C);NA(D);u=E;return F|0}function Es(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h;if((a|0)==(b|0)){k[c>>2]=4;d=0.0}else{f=zo()|0;f=k[f>>2]|0;i=zo()|0;k[i>>2]=0;d=+Lq(a,e,qs()|0);a=zo()|0;a=k[a>>2]|0;if(!a){i=zo()|0;k[i>>2]=f}if((k[e>>2]|0)==(b|0)){if((a|0)==34)g=6}else{d=0.0;g=6}if((g|0)==6)k[c>>2]=4}u=h;return +d} -function Dw(a,b,c,d,e,f,g,h,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=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;_=u;u=u+512|0;J=_+88|0;P=_+96|0;Z=_+80|0;R=_+72|0;K=_+68|0;L=_+500|0;M=_+497|0;N=_+496|0;T=_+56|0;U=_+44|0;V=_+32|0;W=_+20|0;X=_+8|0;O=_+4|0;S=_;k[J>>2]=o;k[Z>>2]=P;Y=Z+4|0;k[Y>>2]=107;k[R>>2]=P;k[K>>2]=P+400;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;o=0;while(1){if((o|0)==3)break;k[T+(o<<2)>>2]=0;o=o+1|0}k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;o=0;while(1){if((o|0)==3)break;k[U+(o<<2)>>2]=0;o=o+1|0}k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;o=0;while(1){if((o|0)==3)break;k[V+(o<<2)>>2]=0;o=o+1|0}k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;o=0;while(1){if((o|0)==3)break;k[W+(o<<2)>>2]=0;o=o+1|0}k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;o=0;while(1){if((o|0)==3)break;k[X+(o<<2)>>2]=0;o=o+1|0}Fw(c,d,L,M,N,T,U,V,W,O);k[n>>2]=k[m>>2];E=h+8|0;F=V+11|0;G=V+4|0;H=W+11|0;I=W+4|0;w=(e&512|0)!=0;x=U+11|0;y=U+4|0;z=X+11|0;A=X+4|0;B=L+3|0;C=T+11|0;D=T+4|0;P=0;v=0;a:while(1){h=(P|0)!=0;if(v>>>0>=4){Q=234;break}o=k[a>>2]|0;do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if(Er(o,pr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);c=k[b>>2]|0;do if(c){o=k[c+12>>2]|0;if((o|0)==(k[c+16>>2]|0))o=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else o=qr(i[o>>0]|0)|0;if(!(Er(o,pr()|0)|0))if(d){t=c;break}else{Q=234;break a}else{k[b>>2]=0;Q=31;break}}else Q=31;while(0);if((Q|0)==31){Q=0;if(d){Q=234;break}else t=0}o=(v|0)!=3;b:do switch(i[L+v>>0]|0){case 1:{if(o){o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if((o&255)<<24>>24<=-1){Q=44;break a}if(!(j[(k[E>>2]|0)+(o<<24>>24<<1)>>1]&8192)){Q=44;break a}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;else{k[c>>2]=d+1;o=qr(i[d>>0]|0)|0}YA(X,o&255);o=t;h=t;Q=46}else o=P;break}case 0:{if(o){o=t;h=t;Q=46}else o=P;break}case 3:{o=i[F>>0]|0;o=o<<24>>24<0?k[G>>2]|0:o&255;h=i[H>>0]|0;h=h<<24>>24<0?k[I>>2]|0:h&255;if((o|0)==(0-h|0))o=P;else{e=(o|0)==0;o=k[a>>2]|0;c=k[o+12>>2]|0;d=(c|0)==(k[o+16>>2]|0);if(e|(h|0)==0){if(d)o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;o=o&255;if(e){if(o<<24>>24!=(i[((i[H>>0]|0)<0?k[W>>2]|0:W)>>0]|0)){o=P;break b}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0))Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;else{k[c>>2]=d+1;qr(i[d>>0]|0)|0}i[g>>0]=1;o=i[H>>0]|0;o=(o<<24>>24<0?k[I>>2]|0:o&255)>>>0>1?W:P;break b}if(o<<24>>24!=(i[((i[F>>0]|0)<0?k[V>>2]|0:V)>>0]|0)){i[g>>0]=1;o=P;break b}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0))Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;else{k[c>>2]=d+1;qr(i[d>>0]|0)|0}o=i[F>>0]|0;o=(o<<24>>24<0?k[G>>2]|0:o&255)>>>0>1?V:P;break b}if(d)o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;c=k[a>>2]|0;d=c+12|0;h=k[d>>2]|0;e=(h|0)==(k[c+16>>2]|0);if((o&255)<<24>>24==(i[((i[F>>0]|0)<0?k[V>>2]|0:V)>>0]|0)){if(e)Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;else{k[d>>2]=h+1;qr(i[h>>0]|0)|0}o=i[F>>0]|0;o=(o<<24>>24<0?k[G>>2]|0:o&255)>>>0>1?V:P;break b}if(e)o=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else o=qr(i[h>>0]|0)|0;if((o&255)<<24>>24!=(i[((i[H>>0]|0)<0?k[W>>2]|0:W)>>0]|0)){Q=103;break a}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0))Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;else{k[c>>2]=d+1;qr(i[d>>0]|0)|0}i[g>>0]=1;o=i[H>>0]|0;o=(o<<24>>24<0?k[I>>2]|0:o&255)>>>0>1?W:P}break}case 2:{if(!(v>>>0<2|h)?!(w|(v|0)==2&(i[B>>0]|0)!=0):0){o=0;break b}c=i[x>>0]|0;o=c<<24>>24<0;r=k[U>>2]|0;d=o?r:U;q=d;c:do if((v|0)!=0?(l[L+(v+-1)>>0]|0)<2:0){o=d+(o?k[y>>2]|0:c&255)|0;p=q;while(1){h=p;if((h|0)==(o|0))break;e=i[h>>0]|0;if(e<<24>>24<=-1)break;if(!(j[(k[E>>2]|0)+(e<<24>>24<<1)>>1]&8192))break;p=h+1|0}e=p-q|0;h=i[z>>0]|0;o=h<<24>>24<0;h=o?k[A>>2]|0:h&255;if(e>>>0<=h>>>0){h=(o?k[X>>2]|0:X)+h|0;o=h+(0-e)|0;while(1){if((o|0)==(h|0)){s=t;d=p;o=r;h=t;break c}if((i[o>>0]|0)!=(i[d>>0]|0)){s=t;d=q;o=r;h=t;break c}d=d+1|0;o=o+1|0}}else{s=t;d=q;o=r;h=t}}else{s=t;d=q;o=r;h=t}while(0);d:while(1){p=c<<24>>24<0;o=(p?o:U)+(p?k[y>>2]|0:c&255)|0;p=d;if((p|0)==(o|0))break;o=k[a>>2]|0;do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if(Er(o,pr()|0)|0){k[a>>2]=0;c=1;break}else{c=(k[a>>2]|0)==0;break}}else c=1;while(0);do if(h){o=k[h+12>>2]|0;if((o|0)==(k[h+16>>2]|0))o=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else o=qr(i[o>>0]|0)|0;if(!(Er(o,pr()|0)|0))if(c^(s|0)==0){o=s;e=s;break}else{o=p;break d}else{k[b>>2]=0;o=0;Q=132;break}}else{o=s;Q=132}while(0);if((Q|0)==132){Q=0;if(c){o=p;break}else e=0}c=k[a>>2]|0;d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=qr(i[d>>0]|0)|0;if((c&255)<<24>>24!=(i[p>>0]|0)){o=p;break}c=k[a>>2]|0;d=c+12|0;h=k[d>>2]|0;if((h|0)==(k[c+16>>2]|0))Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;else{k[d>>2]=h+1;qr(i[h>>0]|0)|0}s=o;d=p+1|0;c=i[x>>0]|0;o=k[U>>2]|0;h=e}if(w?(t=i[x>>0]|0,s=t<<24>>24<0,(o|0)!=((s?k[U>>2]|0:U)+(s?k[y>>2]|0:t&255)|0)):0){Q=144;break a}else o=P;break}case 4:{q=0;o=t;h=t;e:while(1){c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=qr(i[d>>0]|0)|0;if(Er(c,pr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(h){c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0))c=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else c=qr(i[c>>0]|0)|0;if(!(Er(c,pr()|0)|0))if(d^(o|0)==0){e=o;p=o;break}else{h=o;break e}else{k[b>>2]=0;o=0;Q=158;break}}else Q=158;while(0);if((Q|0)==158){Q=0;if(d){h=o;break}else{e=o;p=0}}o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;c=o&255;if(c<<24>>24>-1?(j[(k[E>>2]|0)+(o<<24>>24<<1)>>1]&2048)!=0:0){o=k[n>>2]|0;if((o|0)==(k[J>>2]|0)){Gw(m,n,J);o=k[n>>2]|0}k[n>>2]=o+1;i[o>>0]=c;o=q+1|0}else{t=i[C>>0]|0;if(!(c<<24>>24==(i[N>>0]|0)&(q|0?((t<<24>>24<0?k[D>>2]|0:t&255)|0)!=0:0))){h=e;break}o=k[R>>2]|0;if((o|0)==(k[K>>2]|0)){Hw(Z,R,K);o=k[R>>2]|0}k[R>>2]=o+4;k[o>>2]=q;o=0}c=k[a>>2]|0;d=c+12|0;h=k[d>>2]|0;if((h|0)==(k[c+16>>2]|0)){Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;q=o;o=e;h=p;continue}else{k[d>>2]=h+1;qr(i[h>>0]|0)|0;q=o;o=e;h=p;continue}}o=k[R>>2]|0;if(q|0?(k[Z>>2]|0)!=(o|0):0){if((o|0)==(k[K>>2]|0)){Hw(Z,R,K);o=k[R>>2]|0}k[R>>2]=o+4;k[o>>2]=q}f:do if((k[O>>2]|0)>0){o=k[a>>2]|0;do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if(Er(o,pr()|0)|0){k[a>>2]=0;c=1;break}else{c=(k[a>>2]|0)==0;break}}else c=1;while(0);do if(h){o=k[h+12>>2]|0;if((o|0)==(k[h+16>>2]|0))o=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else o=qr(i[o>>0]|0)|0;if(!(Er(o,pr()|0)|0))if(c)break;else{Q=232;break a}else{k[b>>2]=0;Q=193;break}}else Q=193;while(0);if((Q|0)==193){Q=0;if(c){Q=232;break a}else h=0}o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if((o&255)<<24>>24!=(i[M>>0]|0)){Q=232;break a}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0)){Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;o=h}else{k[c>>2]=d+1;qr(i[d>>0]|0)|0;o=h}while(1){if((k[O>>2]|0)<=0)break f;c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=qr(i[d>>0]|0)|0;if(Er(c,pr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(h){c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0))c=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else c=qr(i[c>>0]|0)|0;if(!(Er(c,pr()|0)|0))if(d^(o|0)==0){e=o;h=o;break}else{Q=232;break a}else{k[b>>2]=0;o=0;Q=216;break}}else Q=216;while(0);if((Q|0)==216){Q=0;if(d){Q=232;break a}else{e=o;h=0}}o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if((o&255)<<24>>24<=-1){Q=232;break a}if(!(j[(k[E>>2]|0)+(o<<24>>24<<1)>>1]&2048)){Q=232;break a}if((k[n>>2]|0)==(k[J>>2]|0))Gw(m,n,J);o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;c=k[n>>2]|0;k[n>>2]=c+1;i[c>>0]=o;k[O>>2]=(k[O>>2]|0)+-1;o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0)){Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;o=e;continue}else{k[c>>2]=d+1;qr(i[d>>0]|0)|0;o=e;continue}}}while(0);if((k[n>>2]|0)==(k[m>>2]|0)){Q=232;break a}else o=P;break}default:o=P}while(0);g:do if((Q|0)==46)while(1){Q=0;c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=qr(i[d>>0]|0)|0;if(Er(c,pr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(h){c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0))c=Pc[k[(k[h>>2]|0)+36>>2]&127](h)|0;else c=qr(i[c>>0]|0)|0;if(!(Er(c,pr()|0)|0))if(d^(o|0)==0){e=o;h=o;break}else{o=P;break g}else{k[b>>2]=0;o=0;Q=59;break}}else Q=59;while(0);if((Q|0)==59){Q=0;if(d){o=P;break g}else{e=o;h=0}}o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if((o&255)<<24>>24<=-1){o=P;break g}if(!(j[(k[E>>2]|0)+(o<<24>>24<<1)>>1]&8192)){o=P;break g}o=k[a>>2]|0;c=o+12|0;d=k[c>>2]|0;if((d|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+40>>2]&127](o)|0;else{k[c>>2]=d+1;o=qr(i[d>>0]|0)|0}YA(X,o&255);o=e;Q=46}while(0);P=o;v=v+1|0}h:do if((Q|0)==44){k[f>>2]=k[f>>2]|4;c=0}else if((Q|0)==103){k[f>>2]=k[f>>2]|4;c=0}else if((Q|0)==144){k[f>>2]=k[f>>2]|4;c=0}else if((Q|0)==232){k[f>>2]=k[f>>2]|4;c=0}else if((Q|0)==234){i:do if(h){e=P+11|0;p=P+4|0;h=1;j:while(1){o=i[e>>0]|0;if(o<<24>>24<0)o=k[p>>2]|0;else o=o&255;if(h>>>0>=o>>>0)break i;o=k[a>>2]|0;do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if(Er(o,pr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);o=k[b>>2]|0;do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if(!(Er(o,pr()|0)|0))if(d)break;else break j;else{k[b>>2]=0;Q=253;break}}else Q=253;while(0);if((Q|0)==253?(Q=0,d):0)break;o=k[a>>2]|0;c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0))o=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else o=qr(i[c>>0]|0)|0;if((i[e>>0]|0)<0)c=k[P>>2]|0;else c=P;if((o&255)<<24>>24!=(i[c+h>>0]|0))break;o=h+1|0;c=k[a>>2]|0;d=c+12|0;h=k[d>>2]|0;if((h|0)==(k[c+16>>2]|0)){Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;h=o;continue}else{k[d>>2]=h+1;qr(i[h>>0]|0)|0;h=o;continue}}k[f>>2]=k[f>>2]|4;c=0;break h}while(0);c=k[Z>>2]|0;o=k[R>>2]|0;if((c|0)!=(o|0)){k[S>>2]=0;Cs(T,c,o,S);if(!(k[S>>2]|0)){c=1;break}else{k[f>>2]=k[f>>2]|4;c=0;break}}else c=1}while(0);NA(X);NA(W);NA(V);NA(U);NA(T);o=k[Z>>2]|0;k[Z>>2]=0;if(o|0)Mc[k[Y>>2]&127](o);u=_;return c|0}function Ew(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;g=b;l=n;m=a+11|0;d=i[m>>0]|0;if(d<<24>>24<0){f=(k[a+8>>2]&2147483647)+-1|0;h=k[a+4>>2]|0}else{f=10;h=d&255}e=c-g|0;do if(e|0){j=h+e|0;if((f-h|0)>>>0>>0){WA(a,f,j-f|0,h,h,0,0);d=i[m>>0]|0}if(d<<24>>24<0)f=k[a>>2]|0;else f=a;e=c+(h-g)|0;d=f+h|0;while(1){if((b|0)==(c|0))break;Tr(d,b);d=d+1|0;b=b+1|0}i[l>>0]=0;Tr(f+e|0,l);if((i[m>>0]|0)<0){k[a+4>>2]=j;break}else{i[m>>0]=j;break}}while(0);u=n;return a|0}function Fw(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;o=u;u=u+16|0;m=o+12|0;n=o;if(a){b=ns(b,34340)|0;Nc[k[(k[b>>2]|0)+44>>2]&63](m,b);a=k[m>>2]|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;Nc[k[(k[b>>2]|0)+32>>2]&63](n,b);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[m>>0]=0;Tr(a,m);k[j+4>>2]=0;a=j}else{i[m>>0]=0;Tr(j,m);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+28>>2]&63](n,b);a=h+11|0;if((i[a>>0]|0)<0){a=k[h>>2]|0;i[m>>0]=0;Tr(a,m);k[h+4>>2]=0;a=h}else{i[m>>0]=0;Tr(h,m);i[a>>0]=0;a=h}SA(h,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);a=Pc[k[(k[b>>2]|0)+12>>2]&127](b)|0;i[d>>0]=a;a=Pc[k[(k[b>>2]|0)+16>>2]&127](b)|0;i[e>>0]=a;Nc[k[(k[b>>2]|0)+20>>2]&63](n,b);a=f+11|0;if((i[a>>0]|0)<0){a=k[f>>2]|0;i[m>>0]=0;Tr(a,m);k[f+4>>2]=0;a=f}else{i[m>>0]=0;Tr(f,m);i[a>>0]=0;a=f}SA(f,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+24>>2]&63](n,b);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[m>>0]=0;Tr(a,m);k[g+4>>2]=0;a=g}else{i[m>>0]=0;Tr(g,m);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);a=Pc[k[(k[b>>2]|0)+36>>2]&127](b)|0}else{b=ns(b,34332)|0;Nc[k[(k[b>>2]|0)+44>>2]&63](m,b);a=k[m>>2]|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;Nc[k[(k[b>>2]|0)+32>>2]&63](n,b);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[m>>0]=0;Tr(a,m);k[j+4>>2]=0;a=j}else{i[m>>0]=0;Tr(j,m);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+28>>2]&63](n,b);a=h+11|0;if((i[a>>0]|0)<0){a=k[h>>2]|0;i[m>>0]=0;Tr(a,m);k[h+4>>2]=0;a=h}else{i[m>>0]=0;Tr(h,m);i[a>>0]=0;a=h}SA(h,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);a=Pc[k[(k[b>>2]|0)+12>>2]&127](b)|0;i[d>>0]=a;a=Pc[k[(k[b>>2]|0)+16>>2]&127](b)|0;i[e>>0]=a;Nc[k[(k[b>>2]|0)+20>>2]&63](n,b);a=f+11|0;if((i[a>>0]|0)<0){a=k[f>>2]|0;i[m>>0]=0;Tr(a,m);k[f+4>>2]=0;a=f}else{i[m>>0]=0;Tr(f,m);i[a>>0]=0;a=f}SA(f,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+24>>2]&63](n,b);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[m>>0]=0;Tr(a,m);k[g+4>>2]=0;a=g}else{i[m>>0]=0;Tr(g,m);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);a=Pc[k[(k[b>>2]|0)+36>>2]&127](b)|0}k[l>>2]=a;u=o;return}function Gw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=a+4|0;e=(k[h>>2]|0)!=107;d=k[a>>2]|0;f=(k[c>>2]|0)-d|0;f=f>>>0<2147483647?f<<1:-1;f=(f|0)==0?1:f;g=(k[b>>2]|0)-d|0;d=Qq(e?d:0,f)|0;if(!e){e=k[a>>2]|0;k[a>>2]=d;if(e){Mc[k[h>>2]&127](e);d=k[a>>2]|0}}else k[a>>2]=d;k[h>>2]=108;k[b>>2]=d+g;k[c>>2]=(k[a>>2]|0)+f;return}function Hw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=a+4|0;e=(k[h>>2]|0)!=107;d=k[a>>2]|0;f=(k[c>>2]|0)-d|0;f=f>>>0<2147483647?f<<1:-1;f=(f|0)==0?4:f;g=(k[b>>2]|0)-d>>2;d=Qq(e?d:0,f)|0;if(!e){e=k[a>>2]|0;k[a>>2]=d;if(e){Mc[k[h>>2]&127](e);d=k[a>>2]|0}}else k[a>>2]=d;k[h>>2]=108;k[b>>2]=d+(g<<2);k[c>>2]=(k[a>>2]|0)+(f>>>2<<2);return}function Iw(a){a=a|0;Ur(a);return}function Jw(a){a=a|0;Ur(a);EA(a);return}function Kw(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+576|0;n=w+424|0;q=w;m=w+24|0;v=w+16|0;p=w+12|0;r=w+8|0;h=w+564|0;j=w+4|0;o=w+464|0;k[v>>2]=m;t=v+4|0;k[t>>2]=107;a=Fr(e)|0;k[r>>2]=a;a=ns(r,32652)|0;i[h>>0]=0;k[j>>2]=k[c>>2];l=k[e+4>>2]|0;k[n>>2]=k[j>>2];if(Mw(b,n,d,r,l,f,h,a,v,p,m+400|0)|0){Rc[k[(k[a>>2]|0)+48>>2]&7](a,27484,27494,n)|0;a=(k[p>>2]|0)-(k[v>>2]|0)|0;if((a|0)>392){a=Oq((a>>>2)+2|0)|0;d=a;if(!a)a=0}else{a=o;d=0}if(i[h>>0]|0){i[a>>0]=45;a=a+1|0}l=n+40|0;m=n;j=k[v>>2]|0;while(1){if(j>>>0>=(k[p>>2]|0)>>>0)break;h=k[j>>2]|0;e=n;while(1){if((e|0)==(l|0)){e=l;break}if((k[e>>2]|0)==(h|0))break;e=e+4|0}i[a>>0]=i[27484+(e-m>>2)>>0]|0;j=j+4|0;a=a+1|0}i[a>>0]=0;k[q>>2]=g;sq(o,27385,q)|0;if(d|0)Pq(d)}a=k[b>>2]|0;do if(a){d=k[a+12>>2]|0;if((d|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[d>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;e=1;break}else{e=(k[b>>2]|0)==0;break}}else e=1;while(0);a=k[c>>2]|0;do if(a){d=k[a+12>>2]|0;if((d|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[d>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(e)break;else{s=32;break}else{k[c>>2]=0;s=30;break}}else s=30;while(0);if((s|0)==30?e:0)s=32;if((s|0)==32)k[f>>2]=k[f>>2]|2;d=k[b>>2]|0;os(r);a=k[v>>2]|0;k[v>>2]=0;if(a|0)Mc[k[t>>2]&127](a);u=w;return d|0}function Lw(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;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+432|0;h=t+424|0;a=t+24|0;s=t+16|0;m=t+8|0;p=t;j=t+428|0;n=t+4|0;k[s>>2]=a;r=s+4|0;k[r>>2]=107;l=Fr(e)|0;k[p>>2]=l;l=ns(p,32652)|0;i[j>>0]=0;o=k[c>>2]|0;k[n>>2]=o;e=k[e+4>>2]|0;k[h>>2]=k[n>>2];n=o;if(Mw(b,h,d,p,e,f,j,l,s,m,a+400|0)|0){a=g+8+3|0;if((i[a>>0]|0)<0){d=k[g>>2]|0;k[h>>2]=0;$r(d,h);k[g+4>>2]=0}else{k[h>>2]=0;$r(g,h);i[a>>0]=0}if(i[j>>0]|0)hB(g,Yc[k[(k[l>>2]|0)+44>>2]&63](l,45)|0);j=Yc[k[(k[l>>2]|0)+44>>2]&63](l,48)|0;e=k[m>>2]|0;h=e+-4|0;a=k[s>>2]|0;while(1){if(a>>>0>=h>>>0)break;if((k[a>>2]|0)!=(j|0))break;a=a+4|0}Nw(g,a,e)|0}a=k[b>>2]|0;do if(a){e=k[a+12>>2]|0;if((e|0)==(k[a+16>>2]|0))a=Pc[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=ur(k[e>>2]|0)|0;if(Gr(a,tr()|0)|0){k[b>>2]=0;e=1;break}else{e=(k[b>>2]|0)==0;break}}else e=1;while(0);do if(o){a=k[n+12>>2]|0;if((a|0)==(k[n+16>>2]|0))a=Pc[k[(k[o>>2]|0)+36>>2]&127](n)|0;else a=ur(k[a>>2]|0)|0;if(!(Gr(a,tr()|0)|0))if(e)break;else{q=27;break}else{k[c>>2]=0;q=25;break}}else q=25;while(0);if((q|0)==25?e:0)q=27;if((q|0)==27)k[f>>2]=k[f>>2]|2;e=k[b>>2]|0;os(p);a=k[s>>2]|0;k[s>>2]=0;if(a|0)Mc[k[r>>2]&127](a);u=t;return e|0}function Mw(a,b,c,d,e,f,g,h,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=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;Y=u;u=u+512|0;H=Y+96|0;N=Y+104|0;X=Y+88|0;P=Y+80|0;I=Y+76|0;J=Y+504|0;K=Y+72|0;L=Y+68|0;R=Y+56|0;S=Y+44|0;T=Y+32|0;U=Y+20|0;V=Y+8|0;M=Y+4|0;Q=Y;k[H>>2]=n;k[X>>2]=N;W=X+4|0;k[W>>2]=107;k[P>>2]=N;k[I>>2]=N+400;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;n=0;while(1){if((n|0)==3)break;k[R+(n<<2)>>2]=0;n=n+1|0}k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;n=0;while(1){if((n|0)==3)break;k[S+(n<<2)>>2]=0;n=n+1|0}k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;n=0;while(1){if((n|0)==3)break;k[T+(n<<2)>>2]=0;n=n+1|0}k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;n=0;while(1){if((n|0)==3)break;k[U+(n<<2)>>2]=0;n=n+1|0}k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;n=0;while(1){if((n|0)==3)break;k[V+(n<<2)>>2]=0;n=n+1|0}Ow(c,d,J,K,L,R,S,T,U,M);k[m>>2]=k[j>>2];D=T+8+3|0;E=T+4|0;F=U+8+3|0;G=U+4|0;v=(e&512|0)!=0;w=S+8+3|0;x=S+4|0;y=V+8+3|0;z=V+4|0;A=J+3|0;B=R+11|0;C=R+4|0;N=0;t=0;a:while(1){e=(N|0)!=0;if(t>>>0>=4){O=229;break}n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(Gr(n,tr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);c=k[b>>2]|0;do if(c){n=k[c+12>>2]|0;if((n|0)==(k[c+16>>2]|0))n=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else n=ur(k[n>>2]|0)|0;if(!(Gr(n,tr()|0)|0))if(d){s=c;break}else{O=229;break a}else{k[b>>2]=0;O=31;break}}else O=31;while(0);if((O|0)==31){O=0;if(d){O=229;break}else s=0}n=(t|0)!=3;b:do switch(i[J+t>>0]|0){case 1:{if(n){n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(!(Sc[k[(k[h>>2]|0)+12>>2]&63](h,8192,n)|0)){O=43;break a}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;else{k[c>>2]=d+4;n=ur(k[d>>2]|0)|0}hB(V,n);n=s;e=s;O=45}else n=N;break}case 0:{if(n){n=s;e=s;O=45}else n=N;break}case 3:{n=i[D>>0]|0;n=n<<24>>24<0?k[E>>2]|0:n&255;e=i[F>>0]|0;e=e<<24>>24<0?k[G>>2]|0:e&255;if((n|0)==(0-e|0))n=N;else{o=(n|0)==0;n=k[a>>2]|0;c=k[n+12>>2]|0;d=(c|0)==(k[n+16>>2]|0);if(o|(e|0)==0){if(d)n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(o){if((n|0)!=(k[((i[F>>0]|0)<0?k[U>>2]|0:U)>>2]|0)){n=N;break b}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0))Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;else{k[c>>2]=d+4;ur(k[d>>2]|0)|0}i[g>>0]=1;n=i[F>>0]|0;n=(n<<24>>24<0?k[G>>2]|0:n&255)>>>0>1?U:N;break b}if((n|0)!=(k[((i[D>>0]|0)<0?k[T>>2]|0:T)>>2]|0)){i[g>>0]=1;n=N;break b}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0))Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;else{k[c>>2]=d+4;ur(k[d>>2]|0)|0}n=i[D>>0]|0;n=(n<<24>>24<0?k[E>>2]|0:n&255)>>>0>1?T:N;break b}if(d)n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;o=(e|0)==(k[c+16>>2]|0);if((n|0)==(k[((i[D>>0]|0)<0?k[T>>2]|0:T)>>2]|0)){if(o)Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;else{k[d>>2]=e+4;ur(k[e>>2]|0)|0}n=i[D>>0]|0;n=(n<<24>>24<0?k[E>>2]|0:n&255)>>>0>1?T:N;break b}if(o)n=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else n=ur(k[e>>2]|0)|0;if((n|0)!=(k[((i[F>>0]|0)<0?k[U>>2]|0:U)>>2]|0)){O=101;break a}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0))Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;else{k[c>>2]=d+4;ur(k[d>>2]|0)|0}i[g>>0]=1;n=i[F>>0]|0;n=(n<<24>>24<0?k[G>>2]|0:n&255)>>>0>1?U:N}break}case 2:{if(!(t>>>0<2|e)?!(v|(t|0)==2&(i[A>>0]|0)!=0):0){n=0;break b}d=i[w>>0]|0;e=k[S>>2]|0;n=d<<24>>24<0?e:S;c:do if((t|0)!=0?(l[J+(t+-1)>>0]|0)<2:0){while(1){r=d<<24>>24<0;c=n;if((c|0)==((r?e:S)+((r?k[x>>2]|0:d&255)<<2)|0))break;if(!(Sc[k[(k[h>>2]|0)+12>>2]&63](h,8192,k[c>>2]|0)|0)){O=108;break}n=c+4|0;d=i[w>>0]|0;e=k[S>>2]|0}if((O|0)==108){O=0;d=i[w>>0]|0;e=k[S>>2]|0}o=d<<24>>24<0?e:S;r=o;q=n-r>>2;p=i[y>>0]|0;c=p<<24>>24<0;p=c?k[z>>2]|0:p&255;if(q>>>0>p>>>0){q=s;c=r;o=s}else{p=(c?k[V>>2]|0:V)+(p<<2)|0;c=p+(0-q<<2)|0;while(1){if((c|0)==(p|0)){q=s;c=n;o=s;break c}if((k[c>>2]|0)!=(k[o>>2]|0)){q=s;c=r;o=s;break c}o=o+4|0;c=c+4|0}}}else{q=s;c=n;o=s}while(0);d:while(1){n=d<<24>>24<0;n=(n?e:S)+((n?k[x>>2]|0:d&255)<<2)|0;p=c;if((p|0)==(n|0))break;n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(Gr(n,tr()|0)|0){k[a>>2]=0;c=1;break}else{c=(k[a>>2]|0)==0;break}}else c=1;while(0);do if(o){n=k[o+12>>2]|0;if((n|0)==(k[o+16>>2]|0))n=Pc[k[(k[o>>2]|0)+36>>2]&127](o)|0;else n=ur(k[n>>2]|0)|0;if(!(Gr(n,tr()|0)|0))if(c^(q|0)==0){n=q;o=q;break}else{n=p;break d}else{k[b>>2]=0;n=0;O=129;break}}else{n=q;O=129}while(0);if((O|0)==129){O=0;if(c){n=p;break}else o=0}c=k[a>>2]|0;d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=ur(k[d>>2]|0)|0;if((c|0)!=(k[p>>2]|0)){n=p;break}c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0))Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;else{k[d>>2]=e+4;ur(k[e>>2]|0)|0}q=n;c=p+4|0;d=i[w>>0]|0;e=k[S>>2]|0}if(v?(s=i[w>>0]|0,r=s<<24>>24<0,(n|0)!=((r?k[S>>2]|0:S)+((r?k[x>>2]|0:s&255)<<2)|0)):0){O=141;break a}else n=N;break}case 4:{q=0;n=s;e=s;e:while(1){c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=ur(k[d>>2]|0)|0;if(Gr(c,tr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0))c=Pc[k[(k[e>>2]|0)+36>>2]&127](e)|0;else c=ur(k[c>>2]|0)|0;if(!(Gr(c,tr()|0)|0))if(d^(n|0)==0){o=n;p=n;break}else{e=n;break e}else{k[b>>2]=0;n=0;O=155;break}}else O=155;while(0);if((O|0)==155){O=0;if(d){e=n;break}else{o=n;p=0}}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))c=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else c=ur(k[c>>2]|0)|0;if(Sc[k[(k[h>>2]|0)+12>>2]&63](h,2048,c)|0){n=k[m>>2]|0;if((n|0)==(k[H>>2]|0)){Pw(j,m,H);n=k[m>>2]|0}k[m>>2]=n+4;k[n>>2]=c;n=q+1|0}else{s=i[B>>0]|0;if(!((c|0)==(k[L>>2]|0)&(q|0?((s<<24>>24<0?k[C>>2]|0:s&255)|0)!=0:0))){e=o;break}n=k[P>>2]|0;if((n|0)==(k[I>>2]|0)){Hw(X,P,I);n=k[P>>2]|0}k[P>>2]=n+4;k[n>>2]=q;n=0}c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;q=n;n=o;e=p;continue}else{k[d>>2]=e+4;ur(k[e>>2]|0)|0;q=n;n=o;e=p;continue}}n=k[P>>2]|0;if(q|0?(k[X>>2]|0)!=(n|0):0){if((n|0)==(k[I>>2]|0)){Hw(X,P,I);n=k[P>>2]|0}k[P>>2]=n+4;k[n>>2]=q}f:do if((k[M>>2]|0)>0){n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(Gr(n,tr()|0)|0){k[a>>2]=0;c=1;break}else{c=(k[a>>2]|0)==0;break}}else c=1;while(0);do if(e){n=k[e+12>>2]|0;if((n|0)==(k[e+16>>2]|0))n=Pc[k[(k[e>>2]|0)+36>>2]&127](e)|0;else n=ur(k[n>>2]|0)|0;if(!(Gr(n,tr()|0)|0))if(c)break;else{O=227;break a}else{k[b>>2]=0;O=189;break}}else O=189;while(0);if((O|0)==189){O=0;if(c){O=227;break a}else e=0}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if((n|0)!=(k[K>>2]|0)){O=227;break a}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;n=e}else{k[c>>2]=d+4;ur(k[d>>2]|0)|0;n=e}while(1){if((k[M>>2]|0)<=0)break f;c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=ur(k[d>>2]|0)|0;if(Gr(c,tr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0))c=Pc[k[(k[e>>2]|0)+36>>2]&127](e)|0;else c=ur(k[c>>2]|0)|0;if(!(Gr(c,tr()|0)|0))if(d^(n|0)==0){o=n;e=n;break}else{O=227;break a}else{k[b>>2]=0;n=0;O=212;break}}else O=212;while(0);if((O|0)==212){O=0;if(d){O=227;break a}else{o=n;e=0}}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(!(Sc[k[(k[h>>2]|0)+12>>2]&63](h,2048,n)|0)){O=227;break a}if((k[m>>2]|0)==(k[H>>2]|0))Pw(j,m,H);n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;c=k[m>>2]|0;k[m>>2]=c+4;k[c>>2]=n;k[M>>2]=(k[M>>2]|0)+-1;n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;n=o;continue}else{k[c>>2]=d+4;ur(k[d>>2]|0)|0;n=o;continue}}}while(0);if((k[m>>2]|0)==(k[j>>2]|0)){O=227;break a}else n=N;break}default:n=N}while(0);g:do if((O|0)==45)while(1){O=0;c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0))c=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0;else c=ur(k[d>>2]|0)|0;if(Gr(c,tr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0))c=Pc[k[(k[e>>2]|0)+36>>2]&127](e)|0;else c=ur(k[c>>2]|0)|0;if(!(Gr(c,tr()|0)|0))if(d^(n|0)==0){o=n;e=n;break}else{n=N;break g}else{k[b>>2]=0;n=0;O=58;break}}else O=58;while(0);if((O|0)==58){O=0;if(d){n=N;break g}else{o=n;e=0}}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(!(Sc[k[(k[h>>2]|0)+12>>2]&63](h,8192,n)|0)){n=N;break g}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+40>>2]&127](n)|0;else{k[c>>2]=d+4;n=ur(k[d>>2]|0)|0}hB(V,n);n=o;O=45}while(0);N=n;t=t+1|0}h:do if((O|0)==43){k[f>>2]=k[f>>2]|4;c=0}else if((O|0)==101){k[f>>2]=k[f>>2]|4;c=0}else if((O|0)==141){k[f>>2]=k[f>>2]|4;c=0}else if((O|0)==227){k[f>>2]=k[f>>2]|4;c=0}else if((O|0)==229){i:do if(e){o=N+8+3|0;p=N+4|0;e=1;j:while(1){n=i[o>>0]|0;if(n<<24>>24<0)n=k[p>>2]|0;else n=n&255;if(e>>>0>=n>>>0)break i;n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(Gr(n,tr()|0)|0){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);n=k[b>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if(!(Gr(n,tr()|0)|0))if(d)break;else break j;else{k[b>>2]=0;O=248;break}}else O=248;while(0);if((O|0)==248?(O=0,d):0)break;n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0))n=Pc[k[(k[n>>2]|0)+36>>2]&127](n)|0;else n=ur(k[c>>2]|0)|0;if((i[o>>0]|0)<0)c=k[N>>2]|0;else c=N;if((n|0)!=(k[c+(e<<2)>>2]|0))break;n=e+1|0;c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){Pc[k[(k[c>>2]|0)+40>>2]&127](c)|0;e=n;continue}else{k[d>>2]=e+4;ur(k[e>>2]|0)|0;e=n;continue}}k[f>>2]=k[f>>2]|4;c=0;break h}while(0);c=k[X>>2]|0;n=k[P>>2]|0;if((c|0)!=(n|0)){k[Q>>2]=0;Cs(R,c,n,Q);if(!(k[Q>>2]|0)){c=1;break}else{k[f>>2]=k[f>>2]|4;c=0;break}}else c=1}while(0);aB(V);aB(U);aB(T);aB(S);NA(R);n=k[X>>2]|0;k[X>>2]=0;if(n|0)Mc[k[W>>2]&127](n);u=Y;return c|0}function Nw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+16|0;j=m;d=a+8|0;l=d+3|0;f=i[l>>0]|0;if(f<<24>>24<0){e=(k[d>>2]&2147483647)+-1|0;g=k[a+4>>2]|0}else{e=1;g=f&255}d=c-b>>2;do if(d|0){h=g+d|0;if((e-g|0)>>>0>>0){gB(a,e,h-e|0,g,g,0,0);d=i[l>>0]|0}else d=f;if(d<<24>>24<0)d=k[a>>2]|0;else d=a;d=d+(g<<2)|0;while(1){if((b|0)==(c|0))break;$r(d,b);d=d+4|0;b=b+4|0}k[j>>2]=0;$r(d,j);if((i[l>>0]|0)<0){k[a+4>>2]=h;break}else{i[l>>0]=h;break}}while(0);u=m;return a|0}function Ow(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;o=u;u=u+16|0;m=o+12|0;n=o;if(a){b=ns(b,34356)|0;Nc[k[(k[b>>2]|0)+44>>2]&63](m,b);a=k[m>>2]|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;Nc[k[(k[b>>2]|0)+32>>2]&63](n,b);a=j+8+3|0;if((i[a>>0]|0)<0){c=k[j>>2]|0;k[m>>2]=0;$r(c,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);Nc[k[(k[b>>2]|0)+28>>2]&63](n,b);a=h+8+3|0;if((i[a>>0]|0)<0){j=k[h>>2]|0;k[m>>2]=0;$r(j,m);k[h+4>>2]=0}else{k[m>>2]=0;$r(h,m);i[a>>0]=0}eB(h,0);k[h>>2]=k[n>>2];k[h+4>>2]=k[n+4>>2];k[h+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[b>>2]|0)+12>>2]&127](b)|0;k[d>>2]=a;a=Pc[k[(k[b>>2]|0)+16>>2]&127](b)|0;k[e>>2]=a;Nc[k[(k[b>>2]|0)+20>>2]&63](n,b);a=f+11|0;if((i[a>>0]|0)<0){a=k[f>>2]|0;i[m>>0]=0;Tr(a,m);k[f+4>>2]=0;a=f}else{i[m>>0]=0;Tr(f,m);i[a>>0]=0;a=f}SA(f,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+24>>2]&63](n,b);a=g+8+3|0;if((i[a>>0]|0)<0){f=k[g>>2]|0;k[m>>2]=0;$r(f,m);k[g+4>>2]=0}else{k[m>>2]=0;$r(g,m);i[a>>0]=0}eB(g,0);k[g>>2]=k[n>>2];k[g+4>>2]=k[n+4>>2];k[g+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[b>>2]|0)+36>>2]&127](b)|0}else{b=ns(b,34348)|0;Nc[k[(k[b>>2]|0)+44>>2]&63](m,b);a=k[m>>2]|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;Nc[k[(k[b>>2]|0)+32>>2]&63](n,b);a=j+8+3|0;if((i[a>>0]|0)<0){c=k[j>>2]|0;k[m>>2]=0;$r(c,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);Nc[k[(k[b>>2]|0)+28>>2]&63](n,b);a=h+8+3|0;if((i[a>>0]|0)<0){j=k[h>>2]|0;k[m>>2]=0;$r(j,m);k[h+4>>2]=0}else{k[m>>2]=0;$r(h,m);i[a>>0]=0}eB(h,0);k[h>>2]=k[n>>2];k[h+4>>2]=k[n+4>>2];k[h+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[b>>2]|0)+12>>2]&127](b)|0;k[d>>2]=a;a=Pc[k[(k[b>>2]|0)+16>>2]&127](b)|0;k[e>>2]=a;Nc[k[(k[b>>2]|0)+20>>2]&63](n,b);a=f+11|0;if((i[a>>0]|0)<0){a=k[f>>2]|0;i[m>>0]=0;Tr(a,m);k[f+4>>2]=0;a=f}else{i[m>>0]=0;Tr(f,m);i[a>>0]=0;a=f}SA(f,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[b>>2]|0)+24>>2]&63](n,b);a=g+8+3|0;if((i[a>>0]|0)<0){f=k[g>>2]|0;k[m>>2]=0;$r(f,m);k[g+4>>2]=0}else{k[m>>2]=0;$r(g,m);i[a>>0]=0}eB(g,0);k[g>>2]=k[n>>2];k[g+4>>2]=k[n+4>>2];k[g+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[b>>2]|0)+36>>2]&127](b)|0}k[l>>2]=a;u=o;return}function Pw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=a+4|0;e=(k[h>>2]|0)!=107;d=k[a>>2]|0;f=(k[c>>2]|0)-d|0;f=f>>>0<2147483647?f<<1:-1;f=(f|0)==0?4:f;g=(k[b>>2]|0)-d>>2;d=Qq(e?d:0,f)|0;if(!e){e=k[a>>2]|0;k[a>>2]=d;if(e){Mc[k[h>>2]&127](e);d=k[a>>2]|0}}else k[a>>2]=d;k[h>>2]=108;k[b>>2]=d+(g<<2);k[c>>2]=(k[a>>2]|0)+(f>>>2<<2);return}function Qw(a){a=a|0;Ur(a);return}function Rw(a){a=a|0;Ur(a);EA(a);return}function Sw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+384|0;t=F+8|0;a=F;h=F+284|0;l=F+72|0;g=F+184|0;E=F+68|0;v=F+180|0;w=F+177|0;x=F+176|0;B=F+56|0;C=F+44|0;D=F+32|0;s=F+28|0;r=F+76|0;y=F+24|0;z=F+20|0;A=F+16|0;k[l>>2]=h;p[t>>3]=f;h=bq(h,100,27590,t)|0;if(h>>>0>99){h=qs()|0;p[a>>3]=f;h=Jt(l,h,27590,a)|0;a=k[l>>2]|0;if(!a)a=k[l>>2]|0;g=Oq(h)|0;j=g;if(!g){g=0;q=a}else q=a}else{j=0;q=0}o=Fr(d)|0;k[E>>2]=o;o=ns(E,32620)|0;n=k[l>>2]|0;Rc[k[(k[o>>2]|0)+32>>2]&7](o,n,n+h|0,g)|0;if(!h)n=0;else n=(i[k[l>>2]>>0]|0)==45;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[D+(a<<2)>>2]=0;a=a+1|0}Uw(c,n,E,v,w,x,B,C,D,s);a=k[s>>2]|0;if((h|0)>(a|0)){c=i[D+11>>0]|0;m=i[C+11>>0]|0;l=1;c=(c<<24>>24<0?k[D+4>>2]|0:c&255)+(h-a<<1)|0;m=m<<24>>24<0?k[C+4>>2]|0:m&255}else{m=i[D+11>>0]|0;c=i[C+11>>0]|0;l=2;c=c<<24>>24<0?k[C+4>>2]|0:c&255;m=m<<24>>24<0?k[D+4>>2]|0:m&255}l=m+a+c+l|0;if(l>>>0>100){l=Oq(l)|0;c=l;if(!l){l=0;a=k[s>>2]|0}}else{l=r;c=0}Vw(l,y,z,k[d+4>>2]|0,g,g+h|0,o,n,v,i[w>>0]|0,i[x>>0]|0,B,C,D,a);k[A>>2]=k[b>>2];b=k[y>>2]|0;a=k[z>>2]|0;k[t>>2]=k[A>>2];a=Ht(t,l,b,a,d,e)|0;if(c|0)Pq(c);NA(D);NA(C);NA(B);os(E);if(j|0)Pq(j);if(q|0)Pq(q);u=F;return a|0}function Tw(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=u;u=u+176|0;r=E+56|0;D=E+52|0;x=E+164|0;y=E+161|0;z=E+160|0;A=E+40|0;B=E+28|0;C=E+16|0;p=E+12|0;m=E+60|0;s=E+8|0;t=E+4|0;v=E;w=Fr(d)|0;k[D>>2]=w;w=ns(D,32620)|0;n=f+11|0;q=i[n>>0]|0;a=q<<24>>24<0;o=f+4|0;if(!((a?k[o>>2]|0:q&255)|0))q=0;else{q=i[(a?k[f>>2]|0:f)>>0]|0;q=q<<24>>24==(Yc[k[(k[w>>2]|0)+28>>2]&63](w,45)|0)<<24>>24};k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}Uw(c,q,D,x,y,z,A,B,C,p);j=i[n>>0]|0;c=k[o>>2]|0;g=j<<24>>24<0?c:j&255;a=k[p>>2]|0;if((g|0)>(a|0)){F=i[C+11>>0]|0;h=i[B+11>>0]|0;l=1;g=(F<<24>>24<0?k[C+4>>2]|0:F&255)+(g-a<<1)|0;h=h<<24>>24<0?k[B+4>>2]|0:h&255}else{h=i[C+11>>0]|0;g=i[B+11>>0]|0;l=2;g=g<<24>>24<0?k[B+4>>2]|0:g&255;h=h<<24>>24<0?k[C+4>>2]|0:h&255}g=h+a+g+l|0;if(g>>>0>100){g=Oq(g)|0;h=g;if(!g){g=0;j=i[n>>0]|0;c=k[o>>2]|0;a=k[p>>2]|0}}else{g=m;h=0}F=j<<24>>24<0;f=F?k[f>>2]|0:f;Vw(g,s,t,k[d+4>>2]|0,f,f+(F?c:j&255)|0,w,q,x,i[y>>0]|0,i[z>>0]|0,A,B,C,a);k[v>>2]=k[b>>2];F=k[s>>2]|0;a=k[t>>2]|0;k[r>>2]=k[v>>2];a=Ht(r,g,F,a,d,e)|0;if(h|0)Pq(h);NA(C);NA(B);NA(A);os(D);u=E;return a|0}function Uw(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+12|0;o=p;if(a){m=ns(c,34340)|0;if(b){Nc[k[(k[m>>2]|0)+44>>2]&63](n,m);a=k[n>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[m>>2]|0)+32>>2]&63](o,m);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[n>>0]=0;Tr(a,n);k[j+4>>2]=0;a=j}else{i[n>>0]=0;Tr(j,n);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);c=m}else{Nc[k[(k[m>>2]|0)+40>>2]&63](n,m);a=k[n>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[m>>2]|0)+28>>2]&63](o,m);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[n>>0]=0;Tr(a,n);k[j+4>>2]=0;a=j}else{i[n>>0]=0;Tr(j,n);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);c=m}a=Pc[k[(k[m>>2]|0)+12>>2]&127](m)|0;i[e>>0]=a;a=Pc[k[(k[m>>2]|0)+16>>2]&127](m)|0;i[f>>0]=a;Nc[k[(k[c>>2]|0)+20>>2]&63](o,m);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[n>>0]=0;Tr(a,n);k[g+4>>2]=0;a=g}else{i[n>>0]=0;Tr(g,n);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);Nc[k[(k[c>>2]|0)+24>>2]&63](o,m);a=h+11|0;if((i[a>>0]|0)<0){a=k[h>>2]|0;i[n>>0]=0;Tr(a,n);k[h+4>>2]=0;a=h}else{i[n>>0]=0;Tr(h,n);i[a>>0]=0;a=h}SA(h,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);a=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0}else{m=ns(c,34332)|0;if(b){Nc[k[(k[m>>2]|0)+44>>2]&63](n,m);a=k[n>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[m>>2]|0)+32>>2]&63](o,m);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[n>>0]=0;Tr(a,n);k[j+4>>2]=0;a=j}else{i[n>>0]=0;Tr(j,n);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);c=m}else{Nc[k[(k[m>>2]|0)+40>>2]&63](n,m);a=k[n>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[m>>2]|0)+28>>2]&63](o,m);a=j+11|0;if((i[a>>0]|0)<0){a=k[j>>2]|0;i[n>>0]=0;Tr(a,n);k[j+4>>2]=0;a=j}else{i[n>>0]=0;Tr(j,n);i[a>>0]=0;a=j}SA(j,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);c=m}a=Pc[k[(k[m>>2]|0)+12>>2]&127](m)|0;i[e>>0]=a;a=Pc[k[(k[m>>2]|0)+16>>2]&127](m)|0;i[f>>0]=a;Nc[k[(k[c>>2]|0)+20>>2]&63](o,m);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[n>>0]=0;Tr(a,n);k[g+4>>2]=0;a=g}else{i[n>>0]=0;Tr(g,n);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);Nc[k[(k[c>>2]|0)+24>>2]&63](o,m);a=h+11|0;if((i[a>>0]|0)<0){a=k[h>>2]|0;i[n>>0]=0;Tr(a,n);k[h+4>>2]=0;a=h}else{i[n>>0]=0;Tr(h,n);i[a>>0]=0;a=h}SA(h,0);k[a>>2]=k[o>>2];k[a+4>>2]=k[o+4>>2];k[a+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}NA(o);a=Pc[k[(k[m>>2]|0)+36>>2]&127](m)|0}k[l>>2]=a;u=p;return}function Vw(a,b,c,d,e,f,g,h,l,m,n,o,p,q,r){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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[c>>2]=a;z=q+11|0;H=q+4|0;A=p+11|0;B=p+4|0;C=(d&512|0)==0;D=g+8|0;E=(r|0)>0;F=o+11|0;G=o+4|0;y=0;while(1){if((y|0)==4)break;a:do switch(i[l+y>>0]|0){case 0:{k[b>>2]=k[c>>2];break}case 1:{k[b>>2]=k[c>>2];w=Yc[k[(k[g>>2]|0)+28>>2]&63](g,32)|0;x=k[c>>2]|0;k[c>>2]=x+1;i[x>>0]=w;break}case 3:{x=i[z>>0]|0;s=x<<24>>24<0;if((s?k[H>>2]|0:x&255)|0){w=i[(s?k[q>>2]|0:q)>>0]|0;x=k[c>>2]|0;k[c>>2]=x+1;i[x>>0]=w}break}case 2:{t=i[A>>0]|0;s=t<<24>>24<0;t=s?k[B>>2]|0:t&255;if(!(C|(t|0)==0)){x=s?k[p>>2]|0:p;u=x+t|0;s=k[c>>2]|0;t=x;while(1){if((t|0)==(u|0))break;i[s>>0]=i[t>>0]|0;s=s+1|0;t=t+1|0}k[c>>2]=s}break}case 4:{t=k[c>>2]|0;e=h?e+1|0:e;u=e;while(1){if(u>>>0>=f>>>0)break;s=i[u>>0]|0;if(s<<24>>24<=-1)break;if(!(j[(k[D>>2]|0)+(s<<24>>24<<1)>>1]&2048))break;u=u+1|0}if(E){v=r;while(1){s=(v|0)>0;if(!(u>>>0>e>>>0&s))break;x=u+-1|0;s=i[x>>0]|0;w=k[c>>2]|0;k[c>>2]=w+1;i[w>>0]=s;v=v+-1|0;u=x}if(s)w=Yc[k[(k[g>>2]|0)+28>>2]&63](g,48)|0;else w=0;s=v;while(1){v=k[c>>2]|0;k[c>>2]=v+1;if((s|0)<=0)break;i[v>>0]=w;s=s+-1|0}i[v>>0]=m}b:do if((u|0)==(e|0)){w=Yc[k[(k[g>>2]|0)+28>>2]&63](g,48)|0;x=k[c>>2]|0;k[c>>2]=x+1;i[x>>0]=w}else{x=i[F>>0]|0;s=x<<24>>24<0;if(!((s?k[G>>2]|0:x&255)|0)){w=-1;v=0;x=0}else{w=i[(s?k[o>>2]|0:o)>>0]|0;v=0;x=0}while(1){if((u|0)==(e|0))break b;if((x|0)==(w|0)){w=k[c>>2]|0;k[c>>2]=w+1;i[w>>0]=n;v=v+1|0;w=i[F>>0]|0;s=w<<24>>24<0;if(v>>>0<(s?k[G>>2]|0:w&255)>>>0){w=i[(s?k[o>>2]|0:o)+v>>0]|0;w=w<<24>>24==127?-1:w<<24>>24;s=0}else{w=x;s=0}}else s=x;I=u+-1|0;J=i[I>>0]|0;x=k[c>>2]|0;k[c>>2]=x+1;i[x>>0]=J;x=s+1|0;u=I}}while(0);s=k[c>>2]|0;if((t|0)!=(s|0))while(1){s=s+-1|0;if(t>>>0>=s>>>0)break a;J=i[t>>0]|0;i[t>>0]=i[s>>0]|0;i[s>>0]=J;t=t+1|0}break}default:{}}while(0);y=y+1|0}e=i[z>>0]|0;s=e<<24>>24<0;e=s?k[H>>2]|0:e&255;if(e>>>0>1){J=s?k[q>>2]|0:q;t=J+e|0;s=k[c>>2]|0;e=J;while(1){e=e+1|0;if((e|0)==(t|0))break;i[s>>0]=i[e>>0]|0;s=s+1|0}k[c>>2]=s}switch((d&176)<<24>>24){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function Ww(a){a=a|0;Ur(a);return}function Xw(a){a=a|0;Ur(a);EA(a);return}function Yw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+1008|0;t=F+8|0;a=F;h=F+896|0;l=F+888|0;g=F+488|0;E=F+480|0;v=F+892|0;w=F+476|0;x=F+472|0;B=F+460|0;C=F+448|0;D=F+436|0;s=F+432|0;r=F+32|0;y=F+24|0;z=F+20|0;A=F+16|0;k[l>>2]=h;p[t>>3]=f;h=bq(h,100,27590,t)|0;if(h>>>0>99){h=qs()|0;p[a>>3]=f;h=Jt(l,h,27590,a)|0;a=k[l>>2]|0;if(!a)a=k[l>>2]|0;g=Oq(h<<2)|0;j=g;if(!g){g=0;q=a}else q=a}else{j=0;q=0}o=Fr(d)|0;k[E>>2]=o;o=ns(E,32652)|0;n=k[l>>2]|0;Rc[k[(k[o>>2]|0)+48>>2]&7](o,n,n+h|0,g)|0;if(!h)n=0;else n=(i[k[l>>2]>>0]|0)==45;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[D+(a<<2)>>2]=0;a=a+1|0}_w(c,n,E,v,w,x,B,C,D,s);a=k[s>>2]|0;if((h|0)>(a|0)){c=i[D+8+3>>0]|0;m=i[C+8+3>>0]|0;l=1;c=(c<<24>>24<0?k[D+4>>2]|0:c&255)+(h-a<<1)|0;m=m<<24>>24<0?k[C+4>>2]|0:m&255}else{m=i[D+8+3>>0]|0;c=i[C+8+3>>0]|0;l=2;c=c<<24>>24<0?k[C+4>>2]|0:c&255;m=m<<24>>24<0?k[D+4>>2]|0:m&255}l=m+a+c+l|0;if(l>>>0>100){l=Oq(l<<2)|0;c=l;if(!l){l=0;a=k[s>>2]|0}}else{l=r;c=0}$w(l,y,z,k[d+4>>2]|0,g,g+(h<<2)|0,o,n,v,k[w>>2]|0,k[x>>2]|0,B,C,D,a);k[A>>2]=k[b>>2];b=k[y>>2]|0;a=k[z>>2]|0;k[t>>2]=k[A>>2];a=Xt(t,l,b,a,d,e)|0;if(c|0)Pq(c);aB(D);aB(C);NA(B);os(E);if(j|0)Pq(j);if(q|0)Pq(q);u=F;return a|0}function Zw(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=u;u=u+480|0;r=E+468|0;D=E+464|0;x=E+472|0;y=E+460|0;z=E+456|0;A=E+444|0;B=E+432|0;C=E+420|0;o=E+416|0;m=E+16|0;s=E+8|0;t=E+4|0;v=E;w=Fr(d)|0;k[D>>2]=w;w=ns(D,32652)|0;p=f+8+3|0;q=i[p>>0]|0;a=q<<24>>24<0;n=f+4|0;if(!((a?k[n>>2]|0:q&255)|0))q=0;else{q=k[(a?k[f>>2]|0:f)>>2]|0;q=(q|0)==(Yc[k[(k[w>>2]|0)+44>>2]&63](w,45)|0)};k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[B+(a<<2)>>2]=0;a=a+1|0}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[C+(a<<2)>>2]=0;a=a+1|0}_w(c,q,D,x,y,z,A,B,C,o);a=i[p>>0]|0;h=k[n>>2]|0;g=a<<24>>24<0?h:a&255;c=k[o>>2]|0;if((g|0)>(c|0)){F=i[C+8+3>>0]|0;j=i[B+8+3>>0]|0;l=1;g=(F<<24>>24<0?k[C+4>>2]|0:F&255)+(g-c<<1)|0;j=j<<24>>24<0?k[B+4>>2]|0:j&255}else{j=i[C+8+3>>0]|0;g=i[B+8+3>>0]|0;l=2;g=g<<24>>24<0?k[B+4>>2]|0:g&255;j=j<<24>>24<0?k[C+4>>2]|0:j&255}g=j+c+g+l|0;if(g>>>0>100){g=Oq(g<<2)|0;j=g;if(!g){g=0;h=k[n>>2]|0;c=k[o>>2]|0;a=i[p>>0]|0}}else{g=m;j=0}F=a<<24>>24<0;f=F?k[f>>2]|0:f;$w(g,s,t,k[d+4>>2]|0,f,f+((F?h:a&255)<<2)|0,w,q,x,k[y>>2]|0,k[z>>2]|0,A,B,C,c);k[v>>2]=k[b>>2];F=k[s>>2]|0;a=k[t>>2]|0;k[r>>2]=k[v>>2];a=Xt(r,g,F,a,d,e)|0;if(j|0)Pq(j);aB(C);aB(B);NA(A);os(D);u=E;return a|0}function _w(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;o=u;u=u+16|0;m=o+12|0;n=o;if(a){c=ns(c,34356)|0;if(b){Nc[k[(k[c>>2]|0)+44>>2]&63](m,c);a=k[m>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[c>>2]|0)+32>>2]&63](n,c);a=j+8+3|0;if((i[a>>0]|0)<0){d=k[j>>2]|0;k[m>>2]=0;$r(d,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n)}else{Nc[k[(k[c>>2]|0)+40>>2]&63](m,c);a=k[m>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[c>>2]|0)+28>>2]&63](n,c);a=j+8+3|0;if((i[a>>0]|0)<0){d=k[j>>2]|0;k[m>>2]=0;$r(d,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n)}a=Pc[k[(k[c>>2]|0)+12>>2]&127](c)|0;k[e>>2]=a;a=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;k[f>>2]=a;Nc[k[(k[c>>2]|0)+20>>2]&63](n,c);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[m>>0]=0;Tr(a,m);k[g+4>>2]=0;a=g}else{i[m>>0]=0;Tr(g,m);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[c>>2]|0)+24>>2]&63](n,c);a=h+8+3|0;if((i[a>>0]|0)<0){g=k[h>>2]|0;k[m>>2]=0;$r(g,m);k[h+4>>2]=0}else{k[m>>2]=0;$r(h,m);i[a>>0]=0}eB(h,0);k[h>>2]=k[n>>2];k[h+4>>2]=k[n+4>>2];k[h+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0}else{c=ns(c,34348)|0;if(b){Nc[k[(k[c>>2]|0)+44>>2]&63](m,c);a=k[m>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[c>>2]|0)+32>>2]&63](n,c);a=j+8+3|0;if((i[a>>0]|0)<0){d=k[j>>2]|0;k[m>>2]=0;$r(d,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n)}else{Nc[k[(k[c>>2]|0)+40>>2]&63](m,c);a=k[m>>2]|0;i[d>>0]=a;i[d+1>>0]=a>>8;i[d+2>>0]=a>>16;i[d+3>>0]=a>>24;Nc[k[(k[c>>2]|0)+28>>2]&63](n,c);a=j+8+3|0;if((i[a>>0]|0)<0){d=k[j>>2]|0;k[m>>2]=0;$r(d,m);k[j+4>>2]=0}else{k[m>>2]=0;$r(j,m);i[a>>0]=0}eB(j,0);k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n)}a=Pc[k[(k[c>>2]|0)+12>>2]&127](c)|0;k[e>>2]=a;a=Pc[k[(k[c>>2]|0)+16>>2]&127](c)|0;k[f>>2]=a;Nc[k[(k[c>>2]|0)+20>>2]&63](n,c);a=g+11|0;if((i[a>>0]|0)<0){a=k[g>>2]|0;i[m>>0]=0;Tr(a,m);k[g+4>>2]=0;a=g}else{i[m>>0]=0;Tr(g,m);i[a>>0]=0;a=g}SA(g,0);k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}NA(n);Nc[k[(k[c>>2]|0)+24>>2]&63](n,c);a=h+8+3|0;if((i[a>>0]|0)<0){g=k[h>>2]|0;k[m>>2]=0;$r(g,m);k[h+4>>2]=0}else{k[m>>2]=0;$r(h,m);i[a>>0]=0}eB(h,0);k[h>>2]=k[n>>2];k[h+4>>2]=k[n+4>>2];k[h+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}aB(n);a=Pc[k[(k[c>>2]|0)+36>>2]&127](c)|0}k[l>>2]=a;u=o;return}function $w(a,b,c,d,e,f,g,h,j,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var 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[c>>2]=a;B=p+8+3|0;I=p+4|0;C=o+8+3|0;D=o+4|0;E=(d&512|0)==0;F=(q|0)>0;G=n+11|0;H=n+4|0;A=0;while(1){if((A|0)==4)break;a:do switch(i[j+A>>0]|0){case 0:{k[b>>2]=k[c>>2];break}case 1:{k[b>>2]=k[c>>2];y=Yc[k[(k[g>>2]|0)+44>>2]&63](g,32)|0;z=k[c>>2]|0;k[c>>2]=z+4;k[z>>2]=y;break}case 3:{z=i[B>>0]|0;r=z<<24>>24<0;if((r?k[I>>2]|0:z&255)|0){y=k[(r?k[p>>2]|0:p)>>2]|0;z=k[c>>2]|0;k[c>>2]=z+4;k[z>>2]=y}break}case 2:{v=i[C>>0]|0;r=v<<24>>24<0;v=r?k[D>>2]|0:v&255;if(!(E|(v|0)==0)){u=r?k[o>>2]|0:o;s=u+(v<<2)|0;t=k[c>>2]|0;r=t;while(1){if((u|0)==(s|0))break;k[r>>2]=k[u>>2];r=r+4|0;u=u+4|0}k[c>>2]=t+(v<<2)}break}case 4:{s=k[c>>2]|0;e=h?e+4|0:e;r=e;while(1){if(r>>>0>=f>>>0)break;if(!(Sc[k[(k[g>>2]|0)+12>>2]&63](g,2048,k[r>>2]|0)|0))break;r=r+4|0}if(F){u=q;while(1){t=(u|0)>0;if(!(r>>>0>e>>>0&t))break;z=r+-4|0;x=k[z>>2]|0;y=k[c>>2]|0;k[c>>2]=y+4;k[y>>2]=x;u=u+-1|0;r=z}if(t)w=Yc[k[(k[g>>2]|0)+44>>2]&63](g,48)|0;else w=0;v=k[c>>2]|0;while(1){t=v+4|0;if((u|0)<=0)break;k[v>>2]=w;u=u+-1|0;v=t}k[c>>2]=t;k[v>>2]=l}if((r|0)==(e|0)){y=Yc[k[(k[g>>2]|0)+44>>2]&63](g,48)|0;z=k[c>>2]|0;r=z+4|0;k[c>>2]=r;k[z>>2]=y}else{z=i[G>>0]|0;y=z<<24>>24<0;z=z&255;if(!((y?k[H>>2]|0:z)|0)){v=-1;t=0;w=0}else{v=i[(y?k[n>>2]|0:n)>>0]|0;t=0;w=0}while(1){if((r|0)==(e|0))break;u=k[c>>2]|0;if((w|0)==(v|0)){x=u+4|0;k[c>>2]=x;k[u>>2]=m;t=t+1|0;if(t>>>0<(y?k[H>>2]|0:z)>>>0){v=i[(y?k[n>>2]|0:n)+t>>0]|0;v=v<<24>>24==127?-1:v<<24>>24;w=0;u=x}else{v=w;w=0;u=x}}x=r+-4|0;J=k[x>>2]|0;k[c>>2]=u+4;k[u>>2]=J;w=w+1|0;r=x}r=k[c>>2]|0}if((s|0)!=(r|0))while(1){r=r+-4|0;if(s>>>0>=r>>>0)break a;J=k[s>>2]|0;k[s>>2]=k[r>>2];k[r>>2]=J;s=s+4|0}break}default:{}}while(0);A=A+1|0}e=i[B>>0]|0;r=e<<24>>24<0;e=r?k[I>>2]|0:e&255;if(e>>>0>1){r=r?k[p>>2]|0:p;u=r+4|0;r=r+(e<<2)|0;s=k[c>>2]|0;t=r-u|0;e=s;while(1){if((u|0)==(r|0))break;k[e>>2]=k[u>>2];e=e+4|0;u=u+4|0}k[c>>2]=s+(t>>>2<<2)}switch((d&176)<<24>>24){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function ax(a){a=a|0;Ur(a);return}function bx(a){a=a|0;Ur(a);EA(a);return}function cx(a,b,c){a=a|0;b=b|0;c=c|0;c=Qp((i[b+11>>0]|0)<0?k[b>>2]|0:b,1)|0;return c>>>((c|0)!=(-1|0)&1)|0}function dx(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 g=0,h=0,j=0,l=0;h=u;u=u+16|0;g=h;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[g+(b<<2)>>2]=0;b=b+1|0}j=i[f+11>>0]|0;l=j<<24>>24<0;b=l?k[f>>2]|0:f;f=b+(l?k[f+4>>2]|0:j&255)|0;while(1){if(b>>>0>=f>>>0)break;YA(g,i[b>>0]|0);b=b+1|0}b=(i[g+11>>0]|0)<0?k[g>>2]|0:g;c=Pp((c|0)==-1?-1:c<<1,d,e,b)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;f=0;while(1){if((f|0)==3)break;k[a+(f<<2)>>2]=0;f=f+1|0}f=b+(Rp(c)|0)|0;while(1){if(b>>>0>=f>>>0)break;YA(a,i[b>>0]|0);b=b+1|0}NA(g);u=h;return}function ex(a,b){a=a|0;b=b|0;return}function fx(a){a=a|0;Ur(a);return}function gx(a){a=a|0;Ur(a);EA(a);return}function hx(a,b,c){a=a|0;b=b|0;c=c|0;c=Qp((i[b+11>>0]|0)<0?k[b>>2]|0:b,1)|0;return c>>>((c|0)!=(-1|0)&1)|0}function ix(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+176|0;o=s+168|0;p=s+40|0;q=s+36|0;r=s+32|0;m=s;l=s+24|0;n=s+16|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[m+(b<<2)>>2]=0;b=b+1|0}k[l+4>>2]=0;k[l>>2]=9796;h=i[f+8+3>>0]|0;j=h<<24>>24<0;b=j?k[f>>2]|0:f;h=b+((j?k[f+4>>2]|0:h&255)<<2)|0;j=p+32|0;f=b;b=0;while(1){if(!((b|0)!=2&f>>>0>>0))break;k[r>>2]=f;g=Xc[k[(k[l>>2]|0)+12>>2]&15](l,o,f,h,r,p,j,q)|0;b=p;while(1){if(b>>>0>=(k[q>>2]|0)>>>0)break;YA(m,i[b>>0]|0);b=b+1|0}f=k[r>>2]|0;b=g}Ur(l);g=(i[m+11>>0]|0)<0?k[m>>2]|0:m;f=Pp((c|0)==-1?-1:c<<1,d,e,g)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}k[n+4>>2]=0;k[n>>2]=9844;h=g+(Rp(f)|0)|0;j=h;l=p+128|0;f=g;b=0;while(1){if(!((b|0)!=2&f>>>0>>0))break;k[r>>2]=f;g=Xc[k[(k[n>>2]|0)+16>>2]&15](n,o,f,(j-f|0)>32?f+32|0:h,r,p,l,q)|0;b=p;while(1){if(b>>>0>=(k[q>>2]|0)>>>0)break;hB(a,k[b>>2]|0);b=b+4|0}f=k[r>>2]|0;b=g}Ur(n);NA(m);u=s;return}function jx(a,b){a=a|0;b=b|0;return}function kx(a){a=a|0;Ur(a);EA(a);return}function lx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=u;u=u+16|0;i=b+4|0;a=b;k[i>>2]=c;k[a>>2]=f;g=ux(c,d,i,f,g,a,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[a>>2];u=b;return g|0}function mx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=u;u=u+16|0;i=b+4|0;a=b;k[i>>2]=c;k[a>>2]=f;g=tx(c,d,i,f,g,a,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[a>>2];u=b;return g|0}function nx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function ox(a){a=a|0;return 0}function px(a){a=a|0;return 0}function qx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sx(c,d,e,1114111,0)|0}function rx(a){a=a|0;return 4}function sx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;o=b;p=a;if(((o-p|0)>2&(e&4|0)!=0?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0){n=0;a=(i[a+2>>0]|0)==-65?a+3|0:a}else n=0;a:while(1){if(!(n>>>0>>0&a>>>0>>0)){q=30;break}j=i[a>>0]|0;m=j&255;f=a+1|0;do if(j<<24>>24>-1)if(m>>>0>d>>>0){q=30;break a}else a=f;else{if((j&255)<194){q=30;break a}g=a+2|0;k=a;e=o-k|0;if((j&255)<224){if((e|0)<2){q=30;break a}e=l[f>>0]|0;if((e&192|0)!=128){q=30;break a}if((e&63|m<<6&1984)>>>0>d>>>0){q=30;break a}else{a=g;break}}h=a+3|0;if((j&255)<240){if((e|0)<3){q=30;break a}g=i[g>>0]|0;f=l[f>>0]|0;e=f&224;switch(j<<24>>24){case -32:{if((e|0)!=160){a=k;break a}break}case -19:{if((e|0)!=128){a=k;break a}break}default:if((f&192|0)!=128){a=k;break a}}e=g&255;if((e&192|0)!=128){q=30;break a}if((f<<6&4032|m<<12&61440|e&63)>>>0>d>>>0){q=30;break a}else{a=h;break}}if((e|0)<4|(j&255)>244){q=30;break a}f=i[f>>0]|0;e=i[g>>0]|0;g=i[h>>0]|0;h=f&255;switch(j<<24>>24){case -16:{if((f+112&255)>=48){a=k;break a}break}case -12:{if((h&240|0)!=128){a=k;break a}break}default:if((h&192|0)!=128){a=k;break a}}f=e&255;if((f&192|0)!=128){q=30;break a}e=g&255;if((e&192|0)!=128){q=30;break a}if((h<<12&258048|m<<18&1835008|f<<6&4032|e&63)>>>0>d>>>0){q=30;break a}else a=a+4|0}while(0);n=n+1|0}return a-p|0}function tx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,m=0,n=0,o=0,p=0,q=0;k[c>>2]=a;k[f>>2]=d;q=b;if((((h&4|0?(j=k[c>>2]|0,(q-j|0)>2):0)?(i[j>>0]|0)==-17:0)?(i[j+1>>0]|0)==-69:0)?(i[j+2>>0]|0)==-65:0)k[c>>2]=j+3;a:while(1){m=k[c>>2]|0;if(m>>>0>=b>>>0){a=0;break}p=k[f>>2]|0;if(p>>>0>=e>>>0){a=1;break}n=i[m>>0]|0;o=n&255;a=m+1|0;do if(n<<24>>24>-1){if(o>>>0>g>>>0){a=2;break a}k[p>>2]=o}else{if((n&255)<194){a=2;break a}j=m+2|0;d=q-m|0;if((n&255)<224){if((d|0)<2){a=1;break a}a=l[a>>0]|0;if((a&192|0)!=128){a=2;break a}a=a&63|o<<6&1984;if(a>>>0>g>>>0){a=2;break a}k[p>>2]=a;a=j;break}h=m+3|0;if((n&255)<240){if((d|0)<3){a=1;break a}d=i[j>>0]|0;j=l[a>>0]|0;a=j&224;switch(n<<24>>24){case -32:{if((a|0)!=160){a=2;break a}break}case -19:{if((a|0)!=128){a=2;break a}break}default:if((j&192|0)!=128){a=2;break a}}a=d&255;if((a&192|0)!=128){a=2;break a}a=j<<6&4032|o<<12&61440|a&63;if(a>>>0>g>>>0){a=2;break a}k[p>>2]=a;a=h;break}if((n&255)>=245){a=2;break a}if((d|0)<4){a=1;break a}d=i[a>>0]|0;a=i[j>>0]|0;j=i[h>>0]|0;h=d&255;switch(n<<24>>24){case -16:{if((d+112&255)>=48){a=2;break a}break}case -12:{if((h&240|0)!=128){a=2;break a}break}default:if((h&192|0)!=128){a=2;break a}}d=a&255;if((d&192|0)!=128){a=2;break a}a=j&255;if((a&192|0)!=128){a=2;break a}a=h<<12&258048|o<<18&1835008|d<<6&4032|a&63;if(a>>>0>g>>>0){a=2;break a}k[p>>2]=a;a=m+4|0}while(0);k[c>>2]=a;k[f>>2]=(k[f>>2]|0)+4}return a|0}function ux(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0;k[c>>2]=a;k[f>>2]=d;if(h&2)if((e-d|0)<3)a=1;else{k[f>>2]=d+1;i[d>>0]=-17;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=-69;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=-65;j=4}else j=4;a:do if((j|0)==4){a=k[c>>2]|0;while(1){if(a>>>0>=b>>>0){a=0;break a}m=k[a>>2]|0;if(m>>>0>g>>>0|(m&-2048|0)==55296){a=2;break a}do if(m>>>0>=128){l=(m&63|128)&255;if(m>>>0<2048){a=k[f>>2]|0;if((e-a|0)<2){a=1;break a}k[f>>2]=a+1;i[a>>0]=m>>>6|192;m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=l;break}a=k[f>>2]|0;d=e-a|0;h=a+1|0;j=(m>>>6&63|128)&255;if(m>>>0<65536){if((d|0)<3){a=1;break a}k[f>>2]=h;i[a>>0]=m>>>12|224;m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=j;m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=l;break}else{if((d|0)<4){a=1;break a}k[f>>2]=h;i[a>>0]=m>>>18|240;h=k[f>>2]|0;k[f>>2]=h+1;i[h>>0]=m>>>12&63|128;m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=j;m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=l;break}}else{a=k[f>>2]|0;if((e-a|0)<1){a=1;break a}k[f>>2]=a+1;i[a>>0]=m}while(0);a=(k[c>>2]|0)+4|0;k[c>>2]=a}}while(0);return a|0}function vx(a){a=a|0;Ur(a);EA(a);return}function wx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function xx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function zx(a){a=a|0;return 1}function Ax(a){a=a|0;return 1}function Bx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=d-c|0;return (d>>>0>>0?d:e)|0}function Cx(a){a=a|0;return 1}function Dx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+16|0;p=q;n=q+8|0;j=c;while(1){if((j|0)==(d|0)){j=d;break}if(!(k[j>>2]|0))break;j=j+4|0}k[h>>2]=f;k[e>>2]=c;m=g;o=a+8|0;a:while(1){if((f|0)==(g|0)|(c|0)==(d|0)){j=35;break}r=b;l=k[r+4>>2]|0;a=p;k[a>>2]=k[r>>2];k[a+4>>2]=l;a=cq(k[o>>2]|0)|0;l=Eq(f,e,j-c>>2,m-f|0,b)|0;if(a|0)cq(a)|0;switch(l|0){case -1:{j=10;break a}case 0:{c=1;j=32;break a}default:{}}f=(k[h>>2]|0)+l|0;k[h>>2]=f;if((f|0)==(g|0)){j=33;break}if((j|0)==(d|0)){j=d;c=k[e>>2]|0}else{f=cq(k[o>>2]|0)|0;c=mp(n,0,b)|0;if(f|0)cq(f)|0;if((c|0)==-1){c=2;j=31;break}if(c>>>0>(m-(k[h>>2]|0)|0)>>>0){c=1;j=31;break}else f=n;while(1){if(!c)break;l=i[f>>0]|0;r=k[h>>2]|0;k[h>>2]=r+1;i[r>>0]=l;f=f+1|0;c=c+-1|0}c=(k[e>>2]|0)+4|0;k[e>>2]=c;j=c;while(1){if((j|0)==(d|0)){j=d;break}if(!(k[j>>2]|0))break;j=j+4|0}f=k[h>>2]|0}}if((j|0)==10){k[h>>2]=f;while(1){if((c|0)==(k[e>>2]|0))break;r=k[c>>2]|0;j=cq(k[o>>2]|0)|0;f=mp(f,r,p)|0;if(j|0)cq(j)|0;if((f|0)==-1)break;f=(k[h>>2]|0)+f|0;k[h>>2]=f;c=c+4|0}k[e>>2]=c;c=2;j=32}else if((j|0)==31)j=32;else if((j|0)==33){c=k[e>>2]|0;j=35}if((j|0)!=32)if((j|0)==35)c=(c|0)!=(d|0)&1;u=q;return c|0}function Ex(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+16|0;p=q;j=c;while(1){if((j|0)==(d|0)){j=d;break}if(!(i[j>>0]|0))break;j=j+1|0}k[h>>2]=f;k[e>>2]=c;n=g;o=a+8|0;a=f;while(1){if((a|0)==(g|0)|(c|0)==(d|0)){a=32;break}l=b;f=k[l+4>>2]|0;m=p;k[m>>2]=k[l>>2];k[m+4>>2]=f;m=j;f=cq(k[o>>2]|0)|0;l=Bq(a,e,m-c|0,n-a>>2,b)|0;if(f|0)cq(f)|0;if((l|0)==-1){j=a;a=10;break}a=(k[h>>2]|0)+(l<<2)|0;k[h>>2]=a;if((a|0)==(g|0)){a=29;break}c=k[e>>2]|0;if((j|0)==(d|0))j=d;else{j=cq(k[o>>2]|0)|0;c=Xp(a,c,1,b)|0;if(j|0)cq(j)|0;if(c|0){c=2;a=28;break}k[h>>2]=(k[h>>2]|0)+4;c=(k[e>>2]|0)+1|0;k[e>>2]=c;j=c;while(1){if((j|0)==(d|0)){j=d;break}if(!(i[j>>0]|0))break;j=j+1|0}a=k[h>>2]|0}}do if((a|0)==10){a:while(1){k[h>>2]=j;if((c|0)==(k[e>>2]|0)){a=18;break}a=cq(k[o>>2]|0)|0;j=Xp(j,c,m-c|0,p)|0;if(a|0)cq(a)|0;switch(j|0){case -1:{a=15;break a}case -2:{a=16;break a}case 0:{j=1;break}default:{}}c=c+j|0;j=(k[h>>2]|0)+4|0;a=10}if((a|0)==15){k[e>>2]=c;c=2;a=28;break}else if((a|0)==16){k[e>>2]=c;c=1;a=28;break}else if((a|0)==18){k[e>>2]=c;c=(c|0)!=(d|0)&1;a=28;break}}else if((a|0)==29){c=k[e>>2]|0;a=32}while(0);if((a|0)!=28)if((a|0)==32)c=(c|0)!=(d|0)&1;u=q;return c|0}function Fx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+16|0;f=g;k[e>>2]=c;c=cq(k[a+8>>2]|0)|0;a=mp(f,0,b)|0;if(c|0)cq(c)|0;a:do switch(a|0){case 0:case -1:{a=2;break}default:{a=a+-1|0;if(a>>>0>(d-(k[e>>2]|0)|0)>>>0)a=1;else while(1){if(!a){a=0;break a}b=i[f>>0]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=b;f=f+1|0;a=a+-1|0}}}while(0);u=g;return a|0}function Gx(a){a=a|0;var b=0,c=0;a=a+8|0;b=cq(k[a>>2]|0)|0;c=mq(0,0,4)|0;if(b|0)cq(b)|0;if(!c){a=k[a>>2]|0;if(!a)a=1;else{b=cq(a)|0;a=yp()|0;if(b|0)cq(b)|0;return (a|0)==1|0}}else a=-1;return a|0}function Hx(a){a=a|0;return 0}function Ix(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=d;i=a+8|0;g=0;h=0;a:while(1){if((c|0)==(d|0)|g>>>0>=e>>>0)break;f=cq(k[i>>2]|0)|0;a=Aq(c,j-c|0,b)|0;if(f|0)cq(f)|0;switch(a|0){case -2:case -1:break a;case 0:{a=1;break}default:{}}g=g+1|0;h=a+h|0;c=c+a|0}return h|0}function Jx(a){a=a|0;var b=0;a=k[a+8>>2]|0;if(a){b=cq(a)|0;a=yp()|0;if(b)cq(b)|0}else a=1;return a|0}function Kx(a){a=a|0;var b=0,c=0;k[a>>2]=9892;b=a+8|0;c=k[b>>2]|0;if((c|0)!=(qs()|0))Vp(k[b>>2]|0);Ur(a);return}function Lx(a){a=a|0;Kx(a);EA(a);return}function Mx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=u;u=u+16|0;i=b+4|0;a=b;k[i>>2]=c;k[a>>2]=f;g=Vx(c,d,i,f,g,a,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[a>>2];u=b;return g|0}function Nx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=u;u=u+16|0;i=b+4|0;a=b;k[i>>2]=c;k[a>>2]=f;g=Ux(c,d,i,f,g,a,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[a>>2];u=b;return g|0}function Ox(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function Px(a){a=a|0;return 0}function Qx(a){a=a|0;return 0}function Rx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Tx(c,d,e,1114111,0)|0}function Sx(a){a=a|0;return 4}function Tx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=b;q=a;if(((p-q|0)>2&(e&4|0)!=0?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0){o=0;a=(i[a+2>>0]|0)==-65?a+3|0:a}else o=0;a:while(1){if(!(o>>>0>>0&a>>>0>>0)){r=31;break}j=i[a>>0]|0;n=j&255;if(n>>>0>d>>>0){r=31;break}g=a+1|0;do if(j<<24>>24<=-1){if((j&255)<194){r=31;break a}h=a+2|0;k=a;e=p-k|0;if((j&255)<224){if((e|0)<2){r=31;break a}e=l[g>>0]|0;if((e&192|0)!=128){r=31;break a}if((e&63|n<<6&1984)>>>0>d>>>0){r=31;break a}else{e=o;a=h;break}}m=a+3|0;if((j&255)<240){if((e|0)<3){r=31;break a}f=i[h>>0]|0;g=l[g>>0]|0;e=g&224;switch(j<<24>>24){case -32:{if((e|0)!=160){a=k;break a}break}case -19:{if((e|0)!=128){a=k;break a}break}default:if((g&192|0)!=128){a=k;break a}}e=f&255;if((e&192|0)!=128){r=31;break a}if((g<<6&4032|n<<12&61440|e&63)>>>0>d>>>0){r=31;break a}else{e=o;a=m;break}}if((j&255)>=245){r=31;break a}if((c-o|0)>>>0<2|(e|0)<4){r=31;break a}f=i[g>>0]|0;e=i[h>>0]|0;g=i[m>>0]|0;h=f&255;switch(j<<24>>24){case -16:{if((f+112&255)>=48){a=k;break a}break}case -12:{if((h&240|0)!=128){a=k;break a}break}default:if((h&192|0)!=128){a=k;break a}}f=e&255;if((f&192|0)!=128){r=31;break a}e=g&255;if((e&192|0)!=128){r=31;break a}if((h<<12&258048|n<<18&1835008|f<<6&4032|e&63)>>>0>d>>>0){r=31;break a}else{e=o+1|0;a=a+4|0}}else{e=o;a=g}while(0);o=e+1|0}return a-q|0}function Ux(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k[c>>2]=a;k[f>>2]=d;s=b;if((((h&4|0?(m=k[c>>2]|0,(s-m|0)>2):0)?(i[m>>0]|0)==-17:0)?(i[m+1>>0]|0)==-69:0)?(i[m+2>>0]|0)==-65:0)k[c>>2]=m+3;r=e;a:while(1){d=k[c>>2]|0;a=d>>>0>>0;if(!a){t=40;break}q=k[f>>2]|0;if(q>>>0>=e>>>0){t=40;break}o=i[d>>0]|0;p=o&255;if(p>>>0>g>>>0){a=2;break}a=d+1|0;do if(o<<24>>24>-1)j[q>>1]=o&255;else{if((o&255)<194){a=2;break a}m=s-d|0;h=d+2|0;if((o&255)<224){if((m|0)<2){a=1;break a}a=l[a>>0]|0;if((a&192|0)!=128){a=2;break a}a=a&63|p<<6&1984;if(a>>>0>g>>>0){a=2;break a}j[q>>1]=a;a=h;break}n=d+3|0;if((o&255)<240){if((m|0)<3){a=1;break a}d=i[h>>0]|0;m=l[a>>0]|0;a=m&224;switch(o<<24>>24){case -32:{if((a|0)!=160){a=2;break a}break}case -19:{if((a|0)!=128){a=2;break a}break}default:if((m&192|0)!=128){a=2;break a}}a=d&255;if((a&192|0)!=128){a=2;break a}a=m<<6&4032|p<<12|a&63;if((a&65535)>>>0>g>>>0){a=2;break a}j[q>>1]=a;a=n;break}if((o&255)>=245){a=2;break a}if((m|0)<4){a=1;break a}m=i[a>>0]|0;a=i[h>>0]|0;d=i[n>>0]|0;n=m&255;switch(o<<24>>24){case -16:{if((m+112&255)>=48){a=2;break a}break}case -12:{if((n&240|0)!=128){a=2;break a}break}default:if((n&192|0)!=128){a=2;break a}}h=a&255;if((h&192|0)!=128){a=2;break a}a=d&255;if((a&192|0)!=128){a=2;break a}if((r-q|0)<4){a=1;break a}d=p&7;m=h<<6;a=a&63;if((n<<12&258048|d<<18|m&4032|a)>>>0>g>>>0){a=2;break a}j[q>>1]=n<<2&60|h>>>4&3|((n>>>4&3|d<<2)<<6)+16320|55296;q=q+2|0;k[f>>2]=q;j[q>>1]=a|m&960|56320;a=(k[c>>2]|0)+4|0}while(0);k[c>>2]=a;k[f>>2]=(k[f>>2]|0)+2}if((t|0)==40)a=a&1;return a|0}function Vx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,n=0,o=0,p=0,q=0;k[c>>2]=a;k[f>>2]=d;if(h&2)if((e-d|0)<3)a=1;else{k[f>>2]=d+1;i[d>>0]=-17;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=-69;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=-65;l=4}else l=4;a:do if((l|0)==4){q=b;a=k[c>>2]|0;while(1){if(a>>>0>=b>>>0){a=0;break a}d=j[a>>1]|0;p=d&65535;if(p>>>0>g>>>0){a=2;break a}do if((d&65535)<128){a=k[f>>2]|0;if((e-a|0)<1){a=1;break a}k[f>>2]=a+1;i[a>>0]=d}else{n=p&63;o=(n|128)&255;if((d&65535)<2048){a=k[f>>2]|0;if((e-a|0)<2){a=1;break a}k[f>>2]=a+1;i[a>>0]=p>>>6|192;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o;break}h=(p>>>12|224)&255;l=(p>>>6&63|128)&255;if((d&65535)<55296){a=k[f>>2]|0;if((e-a|0)<3){a=1;break a}k[f>>2]=a+1;i[a>>0]=h;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=l;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o;break}if((d&65535)>=56320){if((d&65535)<57344){a=2;break a}a=k[f>>2]|0;if((e-a|0)<3){a=1;break a}k[f>>2]=a+1;i[a>>0]=h;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=l;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o;break}if((q-a|0)<4){a=1;break a}a=a+2|0;d=m[a>>1]|0;if((d&64512|0)!=56320){a=2;break a}if((e-(k[f>>2]|0)|0)<4){a=1;break a}h=p&960;if(((h<<10)+65536|n<<10|d&1023)>>>0>g>>>0){a=2;break a}k[c>>2]=a;n=(h>>>6)+1|0;o=k[f>>2]|0;k[f>>2]=o+1;i[o>>0]=n>>>2|240;o=k[f>>2]|0;k[f>>2]=o+1;i[o>>0]=p>>>2&15|n<<4&48|128;o=k[f>>2]|0;k[f>>2]=o+1;i[o>>0]=p<<4&48|d>>>6&15|128;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=d&63|128}while(0);a=(k[c>>2]|0)+2|0;k[c>>2]=a}}while(0);return a|0}function Wx(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=9940;d=a+8|0;e=a+12|0;c=0;while(1){b=k[d>>2]|0;if(c>>>0>=(k[e>>2]|0)-b>>2>>>0)break;b=k[b+(c<<2)>>2]|0;if(b|0)zA(b)|0;c=c+1|0}NA(a+144|0);Yx(d);Ur(a);return}function Xx(a){a=a|0;Wx(a);EA(a);return}function Yx(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a>>2]|0;do if(b|0){c=a+4|0;d=k[c>>2]|0;while(1){if((d|0)==(b|0))break;e=d+-4|0;k[c>>2]=e;d=e}if((a+16|0)==(b|0)){i[a+128>>0]=0;break}else{EA(b);break}}while(0);return}function Zx(a){a=a|0;var b=0;k[a>>2]=9960;b=k[a+8>>2]|0;if(b|0?i[a+12>>0]|0:0)FA(b);Ur(a);return}function _x(a){a=a|0;Zx(a);EA(a);return}function $x(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(iy()|0)+((b&255)<<2)|0;b=k[b>>2]&255}return b|0}function ay(a,b,c){a=a|0;b=b|0;c=c|0;while(1){if((b|0)==(c|0))break;a=i[b>>0]|0;if(a<<24>>24>-1){a=iy()|0;a=k[a+(i[b>>0]<<2)>>2]&255}i[b>>0]=a;b=b+1|0}return c|0}function by(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(hy()|0)+(b<<24>>24<<2)|0;b=k[b>>2]&255}return b|0}function cy(a,b,c){a=a|0;b=b|0;c=c|0;while(1){if((b|0)==(c|0))break;a=i[b>>0]|0;if(a<<24>>24>-1){a=hy()|0;a=k[a+(i[b>>0]<<2)>>2]&255}i[b>>0]=a;b=b+1|0}return c|0}function dy(a,b){a=a|0;b=b|0;return b|0}function ey(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)==(c|0))break;i[d>>0]=i[b>>0]|0;d=d+1|0;b=b+1|0}return c|0}function fy(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function gy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((b|0)==(c|0))break;a=i[b>>0]|0;i[e>>0]=a<<24>>24>-1?a:d;e=e+1|0;b=b+1|0}return c|0}function hy(){var a=0;a=Ap()|0;return k[a>>2]|0}function iy(){var a=0;a=Bp()|0;return k[a>>2]|0}function jy(){var a=0;a=xp()|0;return k[a>>2]|0}function ky(a){a=a|0;k[a>>2]=10012;NA(a+12|0);Ur(a);return}function ly(a){a=a|0;ky(a);EA(a);return}function my(a){a=a|0;return i[a+8>>0]|0}function ny(a){a=a|0;return i[a+9>>0]|0}function oy(a,b){a=a|0;b=b|0;JA(a,b+12|0);return}function py(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;KA(a,30628,Br(30628)|0);return}function qy(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;KA(a,30622,Br(30622)|0);return}function ry(a){a=a|0;k[a>>2]=10052;NA(a+16|0);Ur(a);return}function sy(a){a=a|0;ry(a);EA(a);return}function ty(a){a=a|0;return k[a+8>>2]|0}function uy(a){a=a|0;return k[a+12>>2]|0}function vy(a,b){a=a|0;b=b|0;JA(a,b+16|0);return}function wy(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;ZA(a,10108,$u(10108)|0);return}function xy(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;ZA(a,10084,$u(10084)|0);return}function yy(a){a=a|0;Ur(a);EA(a);return}function zy(a){a=a|0;Ur(a);EA(a);return}function Ay(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<128){a=(jy()|0)+(c<<1)|0;a=(j[a>>1]&b)<<16>>16!=0}else a=0;return a|0}function By(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)==(c|0))break;if((k[b>>2]|0)>>>0<128){a=jy()|0;a=m[a+(k[b>>2]<<1)>>1]|0}else a=0;j[d>>1]=a;d=d+2|0;b=b+4|0}return c|0}function Cy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((c|0)==(d|0)){c=d;break}if((k[c>>2]|0)>>>0<128?(a=jy()|0,(j[a+(k[c>>2]<<1)>>1]&b)<<16>>16):0)break;c=c+4|0}return c|0}function Dy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((c|0)==(d|0)){c=d;break}if((k[c>>2]|0)>>>0>=128)break;a=jy()|0;if(!((j[a+(k[c>>2]<<1)>>1]&b)<<16>>16))break;c=c+4|0}return c|0}function Ey(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(iy()|0)+(b<<2)|0;b=k[b>>2]|0}return b|0}function Fy(a,b,c){a=a|0;b=b|0;c=c|0;while(1){if((b|0)==(c|0))break;a=k[b>>2]|0;if(a>>>0<128){a=iy()|0;a=k[a+(k[b>>2]<<2)>>2]|0}k[b>>2]=a;b=b+4|0}return c|0}function Gy(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(hy()|0)+(b<<2)|0;b=k[b>>2]|0}return b|0}function Hy(a,b,c){a=a|0;b=b|0;c=c|0;while(1){if((b|0)==(c|0))break;a=k[b>>2]|0;if(a>>>0<128){a=hy()|0;a=k[a+(k[b>>2]<<2)>>2]|0}k[b>>2]=a;b=b+4|0}return c|0}function Iy(a,b){a=a|0;b=b|0;return b<<24>>24|0}function Jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)==(c|0))break;k[d>>2]=i[b>>0];d=d+4|0;b=b+1|0}return c|0}function Ky(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function Ly(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(c-b|0)>>>2;a=e;e=b;while(1){if((e|0)==(c|0))break;g=k[e>>2]|0;i[a>>0]=g>>>0<128?g&255:d;a=a+1|0;e=e+4|0}return b+(f<<2)|0}function My(a){a=a|0;Ur(a);EA(a);return}function Ny(a){a=a|0;Ur(a);EA(a);return}function Oy(a){a=a|0;Ur(a);EA(a);return}function Py(a){a=a|0;k[a>>2]=10368;return}function Qy(a){a=a|0;k[a>>2]=10404;return}function Ry(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a+4>>2]=d+-1;k[a>>2]=9960;d=a+8|0;k[d>>2]=b;i[a+12>>0]=c&1;if(!b){c=jy()|0;k[d>>2]=c}return}function Sy(a){a=a|0;Oa(28203,28226,304,28480)}function Ty(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;k[a+4>>2]=b+-1;k[a>>2]=9940;d=a+8|0;Uy(d,28);e=a+144|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;KA(e,26111,Br(26111)|0);e=a+12|0;f=k[e>>2]|0;g=k[d>>2]|0;b=g;c=f;while(1){if((c|0)==(b|0))break;h=c+-4|0;k[e>>2]=h;c=h}Vy(d,f-g>>2);Wy();Xy(a,31488);Yy();Zy(a,31496);_y();$y(a,31504);az();bz(a,31520);cz();dz(a,31528);ez();fz(a,31536);gz();hz(a,31552);iz();jz(a,31560);kz();lz(a,31568);mz();nz(a,31592);oz();pz(a,31624);qz();rz(a,31632);sz();tz(a,31640);uz();vz(a,31648);wz();xz(a,31656);yz();zz(a,31664);Az();Bz(a,31672);Cz();Dz(a,31680);Ez();Fz(a,31688);Gz();Hz(a,31696);Iz();Jz(a,31704);Kz();Lz(a,31712);Mz();Nz(a,31720);Oz();Pz(a,31736);Qz();Rz(a,31752);Sz();Tz(a,31768);Uz();Vz(a,31784);Wz();Xz(a,31792);return}function Uy(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;i[a+128>>0]=0;if(b|0){nA(a,b);$z(a,b)}return}function Vy(a,b){a=a|0;b=b|0;var c=0,d=0;d=k[a>>2]|0;c=d;hA(a,d,d+((k[a+8>>2]|0)-c>>2<<2)|0,d+(b<<2)|0,d+((k[a+4>>2]|0)-c>>2<<2)|0);return}function Wy(){k[7873]=0;k[7872]=7604;return}function Xy(a,b){a=a|0;b=b|0;Yz(a,b,ss(32604)|0);return}function Yy(){k[7875]=0;k[7874]=7636;return}function Zy(a,b){a=a|0;b=b|0;Yz(a,b,ss(32612)|0);return}function _y(){Ry(31504,0,0,1);return}function $y(a,b){a=a|0;b=b|0;Yz(a,b,ss(32620)|0);return}function az(){k[7881]=0;k[7880]=10156;return}function bz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32652)|0);return}function cz(){k[7883]=0;k[7882]=10224;return}function dz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34412)|0);return}function ez(){mA(31536,1);return}function fz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34420)|0);return}function gz(){k[7889]=0;k[7888]=10272;return}function hz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34428)|0);return}function iz(){k[7891]=0;k[7890]=10320;return}function jz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34436)|0);return}function kz(){lA(31568,1);return}function lz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32636)|0);return}function mz(){kA(31592,1);return}function nz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32660)|0);return}function oz(){k[7907]=0;k[7906]=7668;return}function pz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32644)|0);return}function qz(){k[7909]=0;k[7908]=7732;return}function rz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32668)|0);return}function sz(){k[7911]=0;k[7910]=7796;return}function tz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32676)|0);return}function uz(){k[7913]=0;k[7912]=7848;return}function vz(a,b){a=a|0;b=b|0;Yz(a,b,ss(32684)|0);return}function wz(){k[7915]=0;k[7914]=9396;return}function xz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34332)|0);return}function yz(){k[7917]=0;k[7916]=9452;return}function zz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34340)|0);return}function Az(){k[7919]=0;k[7918]=9508;return}function Bz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34348)|0);return}function Cz(){k[7921]=0;k[7920]=9564;return}function Dz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34356)|0);return}function Ez(){k[7923]=0;k[7922]=9620;return}function Fz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34364)|0);return}function Gz(){k[7925]=0;k[7924]=9648;return}function Hz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34372)|0);return}function Iz(){k[7927]=0;k[7926]=9676;return}function Jz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34380)|0);return}function Kz(){k[7929]=0;k[7928]=9704;return}function Lz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34388)|0);return}function Mz(){k[7931]=0;k[7930]=10136;Py(31728);k[7930]=7900;k[7932]=7948;return}function Nz(a,b){a=a|0;b=b|0;Yz(a,b,ss(33496)|0);return}function Oz(){k[7935]=0;k[7934]=10136;Qy(31744);k[7934]=7984;k[7936]=8032;return}function Pz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34308)|0);return}function Qz(){var a=0;k[7939]=0;k[7938]=10136;a=qs()|0;k[7940]=a;k[7938]=9348;return}function Rz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34316)|0);return}function Sz(){var a=0;k[7943]=0;k[7942]=10136;a=qs()|0;k[7944]=a;k[7942]=9372;return}function Tz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34324)|0);return}function Uz(){k[7947]=0;k[7946]=9732;return}function Vz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34396)|0);return}function Wz(){k[7949]=0;k[7948]=9764;return}function Xz(a,b){a=a|0;b=b|0;Yz(a,b,ss(34404)|0);return}function Yz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;xA(b);e=a+8|0;d=k[e>>2]|0;if((k[a+12>>2]|0)-d>>2>>>0>c>>>0)a=e;else{Zz(e,c+1|0);a=e;d=k[e>>2]|0}d=k[d+(c<<2)>>2]|0;if(d|0)zA(d)|0;k[(k[a>>2]|0)+(c<<2)>>2]=b;return}function Zz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=a+4|0;c=k[e>>2]|0;d=k[a>>2]|0;f=c-d>>2;if(f>>>0>=b>>>0){if(f>>>0>b>>>0){b=d+(b<<2)|0;while(1){if((c|0)==(b|0))break;d=c+-4|0;k[e>>2]=d;c=d}Vy(a,f)}}else _z(a,b-f|0);return}function _z(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=u;u=u+32|0;e=h;f=a+8|0;g=a+4|0;c=k[g>>2]|0;if((k[f>>2]|0)-c>>2>>>0>>0){c=(c-(k[a>>2]|0)>>2)+b|0;d=aA(a)|0;if(d>>>0>>0)Sy(a);i=k[a>>2]|0;j=(k[f>>2]|0)-i|0;f=j>>1;bA(e,j>>2>>>0>>1>>>0?(f>>>0>>0?c:f):d,(k[g>>2]|0)-i>>2,a+16|0);cA(e,b);dA(a,e);eA(e)}else $z(a,b);u=h;return}function $z(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;c=e;d=a+4|0;do{iA(c,a,1);k[k[d>>2]>>2]=0;k[d>>2]=(k[d>>2]|0)+4;b=b+-1|0;jA(c)}while((b|0)!=0);u=e;return}function aA(a){a=a|0;return 1073741823}function bA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;k[a+12>>2]=0;k[a+16>>2]=d;do if(b){e=d+112|0;if(b>>>0<29&(i[e>>0]|0)==0){i[e>>0]=1;break}else{d=CA(b<<2)|0;break}}else d=0;while(0);k[a>>2]=d;c=d+(c<<2)|0;k[a+8>>2]=c;k[a+4>>2]=c;k[a+12>>2]=d+(b<<2);return}function cA(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;a=b;b=k[c>>2]|0;do{k[b>>2]=0;b=(k[c>>2]|0)+4|0;k[c>>2]=b;a=a+-1|0}while((a|0)!=0);return}function dA(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;fA(a);d=k[a>>2]|0;g=a+4|0;f=b+4|0;e=(k[g>>2]|0)-d|0;c=(k[f>>2]|0)+(0-(e>>2)<<2)|0;k[f>>2]=c;if((e|0)>0){nF(c|0,d|0,e|0)|0;d=f;c=k[f>>2]|0}else d=f;f=k[a>>2]|0;k[a>>2]=c;k[d>>2]=f;c=b+8|0;f=k[g>>2]|0;k[g>>2]=k[c>>2];k[c>>2]=f;c=a+8|0;f=b+12|0;e=k[c>>2]|0;k[c>>2]=k[f>>2];k[f>>2]=e;k[b>>2]=k[d>>2];gA(a,(k[g>>2]|0)-(k[a>>2]|0)>>2);return}function eA(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+4>>2]|0;c=a+8|0;d=k[c>>2]|0;while(1){if((d|0)==(b|0))break;e=d+-4|0;k[c>>2]=e;d=e}c=k[a>>2]|0;do if(c|0){b=k[a+16>>2]|0;if((b|0)==(c|0)){i[b+112>>0]=0;break}else{EA(c);break}}while(0);return}function fA(a){a=a|0;var b=0,c=0,d=0;d=k[a>>2]|0;c=d;b=d+((k[a+8>>2]|0)-c>>2<<2)|0;hA(a,d,b,d+((k[a+4>>2]|0)-c>>2<<2)|0,b);return}function gA(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a>>2]|0;d=c+((k[a+8>>2]|0)-c>>2<<2)|0;hA(a,c,d,d,c+(b<<2)|0);return}function hA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function iA(a,b,c){a=a|0;b=b|0;c=c|0;return}function jA(a){a=a|0;return}function kA(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=10052;k[a+8>>2]=46;k[a+12>>2]=44;b=a+16|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function lA(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=10012;i[a+8>>0]=46;i[a+9>>0]=44;b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function mA(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=9892;b=qs()|0;k[a+8>>2]=b;return}function nA(a,b){a=a|0;b=b|0;var c=0;if((aA(a)|0)>>>0>>0)Sy(a);c=a+128|0;if(b>>>0<29&(i[c>>0]|0)==0){i[c>>0]=1;c=a+16|0}else c=CA(b<<2)|0;k[a+4>>2]=c;k[a>>2]=c;k[a+8>>2]=c+(b<<2);gA(a,0);return}function oA(){if((i[31800]|0)==0?aF(31800)|0:0){pA()|0;k[8612]=34444}return k[8612]|0}function pA(){qA();k[8611]=31808;return 34444}function qA(){Ty(31808,1);return}function rA(){sA(34452,oA()|0);return 34452}function sA(a,b){a=a|0;b=b|0;b=k[b>>2]|0;k[a>>2]=b;xA(b);return}function tA(){if((i[31968]|0)==0?aF(31968)|0:0){rA()|0;k[8614]=34452}return k[8614]|0}function uA(a){a=a|0;var b=0;b=tA()|0;b=k[b>>2]|0;k[a>>2]=b;xA(b);return}function vA(a,b,c){a=a|0;b=b|0;c=c|0;if(!c)a=0;else a=Uo(a,b,c)|0;return a|0}function wA(a){a=a|0;return}function xA(a){a=a|0;yA(a+4|0);return}function yA(a){a=a|0;k[a>>2]=(k[a>>2]|0)+1;return}function zA(a){a=a|0;if((AA(a+4|0)|0)==-1){Mc[k[(k[a>>2]|0)+8>>2]&127](a);a=1}else a=0;return a|0}function AA(a){a=a|0;var b=0;b=k[a>>2]|0;k[a>>2]=b+-1;return b+-1|0}function BA(a,b,c){a=a|0;b=b|0;c=c|0;jF(34460)|0;while(1){if((k[a>>2]|0)!=1)break;dc(34488,34460)|0}if(!(k[a>>2]|0)){k[a>>2]=1;xF(34460)|0;Mc[c&127](b);jF(34460)|0;k[a>>2]=-1;xF(34460)|0;mF(34488)|0}else xF(34460)|0;return}function CA(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=Oq(b)|0;if(a|0)break;a=dF()|0;if(!a){a=0;break}dd[a&3]()}return a|0}function DA(a){a=a|0;return CA(a)|0}function EA(a){a=a|0;Pq(a);return}function FA(a){a=a|0;EA(a);return}function GA(){return}function HA(a){a=a|0;Oa(28351,28380,1183,28480)}function IA(a){a=a|0;Oa(28501,28380,1194,28530)}function JA(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;if((i[b+11>>0]|0)<0)KA(a,k[b>>2]|0,k[b+4>>2]|0);else{k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2]}return}function KA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;d=f;if(c>>>0<=4294967279)if(c>>>0<11)i[a+11>>0]=c;else e=5;else{HA(a);e=5}if((e|0)==5){g=c+16&-16;e=CA(g)|0;k[a>>2]=e;k[a+8>>2]=g|-2147483648;k[a+4>>2]=c;a=e}rr(a,b,c)|0;i[d>>0]=0;Tr(a+c|0,d);u=f;return}function LA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;d=f;if(b>>>0<=4294967279)if(b>>>0<11)i[a+11>>0]=b;else e=5;else{HA(a);e=5}if((e|0)==5){g=b+16&-16;e=CA(g)|0;k[a>>2]=e;k[a+8>>2]=g|-2147483648;k[a+4>>2]=b;a=e}MA(a,b,c)|0;i[d>>0]=0;Tr(a+b|0,d);u=f;return}function MA(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)iF(a|0,(qr(c)|0)&255|0,b|0)|0;return a|0}function NA(a){a=a|0;if((i[a+11>>0]|0)<0)EA(k[a>>2]|0);return}function OA(a,b){a=a|0;b=b|0;var c=0,d=0;if((a|0)!=(b|0)){c=i[b+11>>0]|0;d=c<<24>>24<0;PA(a,d?k[b>>2]|0:b,d?k[b+4>>2]|0:c&255)|0}return a|0}function PA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;g=j;h=a+11|0;d=i[h>>0]|0;e=d<<24>>24<0;if(e)f=(k[a+8>>2]&2147483647)+-1|0;else f=10;do if(f>>>0>=c>>>0){if(e)d=k[a>>2]|0;else d=a;QA(d,b,c)|0;i[g>>0]=0;Tr(d+c|0,g);if((i[h>>0]|0)<0){k[a+4>>2]=c;break}else{i[h>>0]=c;break}}else{if(e)d=k[a+4>>2]|0;else d=d&255;RA(a,f,c-f|0,d,0,d,c,b)}while(0);u=j;return a|0}function QA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)vF(a|0,b|0,c|0)|0;return a|0}function RA(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;if((-18-b|0)>>>0>>0)HA(a);if((i[a+11>>0]|0)<0)m=k[a>>2]|0;else m=a;if(b>>>0<2147483623){j=c+b|0;l=b<<1;j=j>>>0>>0?l:j;j=j>>>0<11?11:j+16&-16}else j=-17;l=CA(j)|0;if(e|0)rr(l,m,e)|0;if(g|0)rr(l+e|0,h,g)|0;c=d-f|0;d=c-e|0;if(d|0)rr(l+e+g|0,m+e+f|0,d)|0;if((b|0)!=10)EA(m);k[a>>2]=l;k[a+8>>2]=j|-2147483648;g=c+g|0;k[a+4>>2]=g;i[n>>0]=0;Tr(l+g|0,n);u=o;return}function SA(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(b>>>0>4294967279)HA(a);g=a+11|0;d=i[g>>0]|0;e=d<<24>>24<0;if(e){h=k[a+4>>2]|0;c=(k[a+8>>2]&2147483647)+-1|0}else{h=d&255;c=10}f=h>>>0>b>>>0?h:b;b=f>>>0<11;f=b?10:(f+16&-16)+-1|0;do if((f|0)!=(c|0)){do if(b){b=k[a>>2]|0;if(e){e=0;c=b;b=a;d=13}else{rr(a,b,(d&255)+1|0)|0;EA(b);d=15}}else{b=CA(f+1|0)|0;if(e){e=1;c=k[a>>2]|0;d=13;break}else{rr(b,a,(d&255)+1|0)|0;d=14;break}}while(0);if((d|0)==13){rr(b,c,(k[a+4>>2]|0)+1|0)|0;EA(c);if(e)d=14;else d=15}if((d|0)==14){k[a+8>>2]=f+1|-2147483648;k[a+4>>2]=h;k[a>>2]=b;break}else if((d|0)==15){i[g>>0]=h;break}}while(0);return}function TA(a,b){a=a|0;b=b|0;return PA(a,b,Br(b)|0)|0}function UA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;e=h;f=a+11|0;d=i[f>>0]|0;g=d<<24>>24<0;if(g)d=k[a+4>>2]|0;else d=d&255;do if(d>>>0>=b>>>0)if(g){g=(k[a>>2]|0)+b|0;i[e>>0]=0;Tr(g,e);k[a+4>>2]=b;break}else{i[e>>0]=0;Tr(a+b|0,e);i[f>>0]=b;break}else VA(a,b-d|0,c)|0;while(0);u=h;return}function VA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=u;u=u+16|0;h=l;if(b|0){j=a+11|0;d=i[j>>0]|0;if(d<<24>>24<0){e=(k[a+8>>2]&2147483647)+-1|0;f=k[a+4>>2]|0}else{e=10;f=d&255}g=f+b|0;if((e-f|0)>>>0>>0){WA(a,e,g-e|0,f,f,0,0);d=i[j>>0]|0}if(d<<24>>24<0)d=k[a>>2]|0;else d=a;MA(d+f|0,b,c)|0;if((i[j>>0]|0)<0)k[a+4>>2]=g;else i[j>>0]=g;i[h>>0]=0;Tr(d+g|0,h)}u=l;return a|0}function WA(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;var h=0,j=0,l=0;if((-17-b|0)>>>0>>0)HA(a);if((i[a+11>>0]|0)<0)l=k[a>>2]|0;else l=a;if(b>>>0<2147483623){h=c+b|0;j=b<<1;h=h>>>0>>0?j:h;h=h>>>0<11?11:h+16&-16}else h=-17;j=CA(h)|0;if(e|0)rr(j,l,e)|0;c=d-f-e|0;if(c|0)rr(j+e+g|0,l+e+f|0,c)|0;if((b|0)!=10)EA(l);k[a>>2]=j;k[a+8>>2]=h|-2147483648;return}function XA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+16|0;j=m;l=a+11|0;d=i[l>>0]|0;h=d<<24>>24<0;if(h){e=(k[a+8>>2]&2147483647)+-1|0;f=k[a+4>>2]|0}else{e=10;f=d&255}g=f+c|0;if((e-f|0)>>>0>=c>>>0){if(c|0){if(h)d=k[a>>2]|0;else d=a;rr(d+f|0,b,c)|0;if((i[l>>0]|0)<0)k[a+4>>2]=g;else i[l>>0]=g;i[j>>0]=0;Tr(d+g|0,j)}}else RA(a,e,g-e|0,f,f,0,c,b);u=m;return a|0}function YA(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;f=h;g=h+1|0;i[f>>0]=b;d=a+11|0;b=i[d>>0]|0;c=b<<24>>24<0;if(c){e=k[a+4>>2]|0;b=(k[a+8>>2]&2147483647)+-1|0}else{e=b&255;b=10}if((e|0)==(b|0)){WA(a,b,1,b,b,0,0);b=b+1|0;if((i[d>>0]|0)<0)c=8;else c=7}else{b=e+1|0;if(c)c=8;else c=7}if((c|0)==7){i[d>>0]=b;b=a}else if((c|0)==8){d=k[a>>2]|0;k[a+4>>2]=b;b=d}a=b+e|0;Tr(a,f);i[g>>0]=0;Tr(a+1|0,g);u=h;return}function ZA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+16|0;f=g;if(c>>>0<=1073741807)if(c>>>0<2){i[a+8+3>>0]=c;e=a}else d=5;else{HA(a);d=5}do if((d|0)==5){d=c+4&-4;if(d>>>0>1073741823)Oa(28551,28588,1734,28688);else{e=CA(d<<2)|0;k[a>>2]=e;k[a+8>>2]=d|-2147483648;k[a+4>>2]=c;break}}while(0);vr(e,b,c)|0;k[f>>2]=0;$r(e+(c<<2)|0,f);u=g;return}function _A(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+16|0;f=g;if(b>>>0<=1073741807)if(b>>>0<2){i[a+8+3>>0]=b;e=a}else d=5;else{HA(a);d=5}do if((d|0)==5){d=b+4&-4;if(d>>>0>1073741823)Oa(28551,28588,1734,28688);else{e=CA(d<<2)|0;k[a>>2]=e;k[a+8>>2]=d|-2147483648;k[a+4>>2]=b;break}}while(0);$A(e,b,c)|0;k[f>>2]=0;$r(e+(b<<2)|0,f);u=g;return}function $A(a,b,c){a=a|0;b=b|0;c=c|0;if(b)Mq(a,c,b)|0;return a|0}function aB(a){a=a|0;if((i[a+8+3>>0]|0)<0)EA(k[a>>2]|0);return}function bB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=u;u=u+16|0;h=l;d=a+8|0;j=d+3|0;f=i[j>>0]|0;g=f<<24>>24<0;if(g)e=(k[d>>2]&2147483647)+-1|0;else e=1;do if(e>>>0>=c>>>0){if(g)d=k[a>>2]|0;else d=a;cB(d,b,c)|0;k[h>>2]=0;$r(d+(c<<2)|0,h);if((i[j>>0]|0)<0){k[a+4>>2]=c;break}else{i[j>>0]=c;break}}else{if(g)d=k[a+4>>2]|0;else d=f&255;dB(a,e,c-e|0,d,0,d,c,b)}while(0);u=l;return a|0}function cB(a,b,c){a=a|0;b=b|0;c=c|0;if(c)Nq(a,b,c)|0;return a|0}function dB(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p;if((1073741806-b|0)>>>0>>0)HA(a);l=a+8|0;if((i[l+3>>0]|0)<0)n=k[a>>2]|0;else n=a;if(b>>>0<536870887){c=c+b|0;j=b<<1;c=c>>>0>>0?j:c;c=c>>>0<2?2:c+4&-4;if(c>>>0>1073741823)Oa(28551,28588,1734,28688);else m=c}else m=1073741807;j=CA(m<<2)|0;if(e|0)vr(j,n,e)|0;if(g|0)vr(j+(e<<2)|0,h,g)|0;c=d-f|0;d=c-e|0;if(d|0)vr(j+(e<<2)+(g<<2)|0,n+(e<<2)+(f<<2)|0,d)|0;if((b|0)!=1)EA(n);k[a>>2]=j;k[l>>2]=m|-2147483648;g=c+g|0;k[a+4>>2]=g;k[o>>2]=0;$r(j+(g<<2)|0,o);u=p;return}function eB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;if(b>>>0>1073741807)HA(a);j=a+8|0;g=j+3|0;d=i[g>>0]|0;e=d<<24>>24<0;if(e){h=k[a+4>>2]|0;c=(k[j>>2]&2147483647)+-1|0}else{h=d&255;c=1}f=h>>>0>b>>>0?h:b;b=f>>>0<2;f=b?1:(f+4&-4)+-1|0;do if((f|0)!=(c|0)){do if(b){b=k[a>>2]|0;if(e){e=0;c=b;b=a;d=15}else{vr(a,b,(d&255)+1|0)|0;EA(b);d=17}}else{b=f+1|0;if(b>>>0>1073741823)Oa(28551,28588,1734,28688);b=CA(b<<2)|0;if(e){e=1;c=k[a>>2]|0;d=15;break}else{vr(b,a,(d&255)+1|0)|0;d=16;break}}while(0);if((d|0)==15){vr(b,c,(k[a+4>>2]|0)+1|0)|0;EA(c);if(e)d=16;else d=17}if((d|0)==16){k[j>>2]=f+1|-2147483648;k[a+4>>2]=h;k[a>>2]=b;break}else if((d|0)==17){i[g>>0]=h;break}}while(0);return}function fB(a,b){a=a|0;b=b|0;return bB(a,b,$u(b)|0)|0}function gB(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;var h=0,j=0,l=0,m=0;if((1073741807-b|0)>>>0>>0)HA(a);m=a+8|0;if((i[m+3>>0]|0)<0)l=k[a>>2]|0;else l=a;if(b>>>0<536870887){c=c+b|0;h=b<<1;c=c>>>0>>0?h:c;c=c>>>0<2?2:c+4&-4;if(c>>>0>1073741823)Oa(28551,28588,1734,28688);else j=c}else j=1073741807;h=CA(j<<2)|0;if(e|0)vr(h,l,e)|0;c=d-f-e|0;if(c|0)vr(h+(e<<2)+(g<<2)|0,l+(e<<2)+(f<<2)|0,c)|0;if((b|0)!=1)EA(l);k[a>>2]=h;k[m>>2]=j|-2147483648;return}function hB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;g=j;h=j+4|0;k[g>>2]=b;c=a+8|0;e=c+3|0;b=i[e>>0]|0;d=b<<24>>24<0;if(d){f=k[a+4>>2]|0;b=(k[c>>2]&2147483647)+-1|0}else{f=b&255;b=1}if((f|0)==(b|0)){gB(a,b,1,b,b,0,0);b=b+1|0;if((i[e>>0]|0)<0)c=8;else c=7}else{b=f+1|0;if(d)c=8;else c=7}if((c|0)==7){i[e>>0]=b;b=a}else if((c|0)==8){e=k[a>>2]|0;k[a+4>>2]=b;b=e}a=b+(f<<2)|0;$r(a,g);k[h>>2]=0;$r(a+4|0,h);u=j;return}function iB(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=u;u=u+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=jB()|0;if(a|0?(d=k[a>>2]|0,d|0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[2609];kB(28783,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;d=Sc[k[(k[492]|0)+16>>2]&63](1968,d,e)|0;b=k[2609]|0;if(d){h=k[e>>2]|0;h=Pc[k[(k[h>>2]|0)+8>>2]&127](h)|0;k[f>>2]=b;k[f+4>>2]=a;k[f+8>>2]=h;kB(28697,f)}else{k[h>>2]=b;k[h+4>>2]=a;kB(28742,h)}}kB(28821,g)}function jB(){var a=0,b=0;a=u;u=u+16|0;if(!(rb(34536,2)|0)){b=Ob(k[8635]|0)|0;u=a;return b|0}else kB(28972,a);return 0}function kB(a,b){a=a|0;b=b|0;var c=0;c=u;u=u+16|0;k[c>>2]=b;b=k[930]|0;Wo(b,a,c)|0;Iq(10,b)|0;Zb()}function lB(a){a=a|0;return}function mB(a){a=a|0;lB(a);EA(a);return}function nB(a){a=a|0;return}function oB(a){a=a|0;return}function pB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+64|0;e=g;if(!(tB(a,b,0)|0))if((b|0)!=0?(f=xB(b,1992,1976,0)|0,(f|0)!=0):0){b=e+4|0;d=b+52|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[e>>2]=f;k[e+8>>2]=a;k[e+12>>2]=-1;k[e+48>>2]=1;gd[k[(k[f>>2]|0)+28>>2]&15](f,e,k[c>>2]|0,1);if((k[e+24>>2]|0)==1){k[c>>2]=k[e+16>>2];b=1}else b=0}else b=0;else b=1;u=g;return b|0}function qB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(tB(a,k[b+8>>2]|0,f)|0)wB(0,b,c,d,e);return}function rB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;do if(!(tB(a,k[b+8>>2]|0,e)|0)){if(tB(a,k[b>>2]|0,e)|0){a=b+32|0;if((k[b+16>>2]|0)!=(c|0)?(f=b+20|0,(k[f>>2]|0)!=(c|0)):0){k[a>>2]=d;k[f>>2]=c;d=b+40|0;k[d>>2]=(k[d>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[a>>2]=1}}else vB(0,b,c,d);while(0);return}function sB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(tB(a,k[b+8>>2]|0,0)|0)uB(0,b,c,d);return}function tB(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function uB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=b+16|0;e=k[a>>2]|0;f=b+36|0;g=b+24|0;do if(e){if((e|0)!=(c|0)){k[f>>2]=(k[f>>2]|0)+1;k[g>>2]=2;i[b+54>>0]=1;break}if((k[g>>2]|0)==2)k[g>>2]=d}else{k[a>>2]=c;k[g>>2]=d;k[f>>2]=1}while(0);return}function vB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((k[b+4>>2]|0)==(c|0)?(e=b+28|0,(k[e>>2]|0)!=1):0)k[e>>2]=d;return}function wB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;d=b+16|0;f=k[d>>2]|0;h=b+54|0;j=b+48|0;g=b+24|0;a=b+36|0;if(!f){k[d>>2]=c;k[g>>2]=e;k[a>>2]=1;if(!((k[j>>2]|0)==1&(e|0)==1))break;i[h>>0]=1;break}if((f|0)!=(c|0)){k[a>>2]=(k[a>>2]|0)+1;i[h>>0]=1;break}a=k[g>>2]|0;if((a|0)==2){k[g>>2]=e;a=e}if((k[j>>2]|0)==1&(a|0)==1)i[h>>0]=1}while(0);return}function xB(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,l=0,m=0,n=0,o=0,p=0;p=u;u=u+64|0;n=p;m=k[a>>2]|0;o=a+(k[m+-8>>2]|0)|0;m=k[m+-4>>2]|0;k[n>>2]=c;k[n+4>>2]=a;k[n+8>>2]=b;k[n+12>>2]=d;a=n+16|0;b=n+20|0;d=n+24|0;e=n+28|0;f=n+32|0;g=n+40|0;h=a;l=h+36|0;do{k[h>>2]=0;h=h+4|0}while((h|0)<(l|0));j[a+36>>1]=0;i[a+38>>0]=0;a:do if(tB(m,c,0)|0){k[n+48>>2]=1;Tc[k[(k[m>>2]|0)+20>>2]&15](m,n,o,o,1,0);a=(k[d>>2]|0)==1?o:0}else{Lc[k[(k[m>>2]|0)+24>>2]&7](m,n,o,1,0);switch(k[n+36>>2]|0){case 0:{a=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[b>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((k[d>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){a=0;break}a=k[a>>2]|0}while(0);u=p;return a|0}function yB(a){a=a|0;lB(a);EA(a);return}function zB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(tB(a,k[b+8>>2]|0,f)|0)wB(0,b,c,d,e);else{a=k[a+8>>2]|0;Tc[k[(k[a>>2]|0)+20>>2]&15](a,b,c,d,e,f)}return}function AB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;do if(!(tB(a,k[b+8>>2]|0,e)|0)){f=a+8|0;if(!(tB(a,k[b>>2]|0,e)|0)){h=k[f>>2]|0;Lc[k[(k[h>>2]|0)+24>>2]&7](h,b,c,d,e);break}a=b+32|0;if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[a>>2]=d;d=b+44|0;if((k[d>>2]|0)==4)break;a=b+52|0;i[a>>0]=0;j=b+53|0;i[j>>0]=0;f=k[f>>2]|0;Tc[k[(k[f>>2]|0)+20>>2]&15](f,b,c,c,1,e);if(i[j>>0]|0)if(!(i[a>>0]|0)){a=3;h=11}else a=3;else{a=4;h=11}if((h|0)==11){k[g>>2]=c;j=b+40|0;k[j>>2]=(k[j>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1}k[d>>2]=a;break}if((d|0)==1)k[a>>2]=1}else vB(0,b,c,d);while(0);return}function BB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(tB(a,k[b+8>>2]|0,0)|0)uB(0,b,c,d);else{a=k[a+8>>2]|0;gd[k[(k[a>>2]|0)+28>>2]&15](a,b,c,d)}return}function CB(a){a=a|0;return}function DB(){var a=0;a=u;u=u+16|0;if(!(Ub(34540,109)|0)){u=a;return}else kB(29021,a)}function EB(a){a=a|0;var b=0;b=u;u=u+16|0;Pq(a);if(!(zc(k[8635]|0,0)|0)){u=b;return}else kB(29071,b)}function FB(){var a=0,b=0;a=jB()|0;if((a|0?(b=k[a>>2]|0,b|0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)GB(k[b+12>>2]|0);GB(HB()|0)}function GB(a){a=a|0;var b=0;b=u;u=u+16|0;dd[a&3]();kB(29124,b)}function HB(){var a=0;a=k[2608]|0;k[2608]=a+0;return a|0}function IB(a){a=a|0;return}function JB(a){a=a|0;IB(a);EA(a);return}function KB(a){a=a|0;return 29164}function LB(a){a=a|0;return}function MB(a){a=a|0;lB(a);EA(a);return}function NB(a,b,c){a=a|0;b=b|0;c=c|0;return tB(a,b,0)|0}function OB(a){a=a|0;lB(a);EA(a);return}function PB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=u;u=u+64|0;g=i;k[c>>2]=k[k[c>>2]>>2];if(!(QB(a,b,0)|0))if(((b|0)!=0?(d=xB(b,1992,2064,0)|0,(d|0)!=0):0)?(k[d+8>>2]&~k[a+8>>2]|0)==0:0){a=a+12|0;b=d+12|0;if(!(tB(k[a>>2]|0,k[b>>2]|0,0)|0)?!(tB(k[a>>2]|0,2096,0)|0):0){a=k[a>>2]|0;if((((a|0)!=0?(f=xB(a,1992,1976,0)|0,(f|0)!=0):0)?(e=k[b>>2]|0,(e|0)!=0):0)?(h=xB(e,1992,1976,0)|0,(h|0)!=0):0){a=g+4|0;b=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));k[g>>2]=h;k[g+8>>2]=f;k[g+12>>2]=-1;k[g+48>>2]=1;gd[k[(k[h>>2]|0)+28>>2]&15](h,g,k[c>>2]|0,1);if((k[g+24>>2]|0)==1){k[c>>2]=k[g+16>>2];a=1}else a=0}else a=0}else a=1}else a=0;else a=1;u=i;return a|0}function QB(a,b,c){a=a|0;b=b|0;c=c|0;if(tB(a,b,0)|0)a=1;else a=tB(b,2104,0)|0;return a|0}function RB(a){a=a|0;lB(a);EA(a);return}function SB(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 g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(tB(a,k[b+8>>2]|0,f)|0)wB(0,b,c,d,e);else{p=b+52|0;g=i[p>>0]|0;h=b+53|0;j=i[h>>0]|0;o=k[a+12>>2]|0;l=a+16+(o<<3)|0;i[p>>0]=0;i[h>>0]=0;WB(a+16|0,b,c,d,e,f);a:do if((o|0)>1){m=b+24|0;n=b+54|0;o=a+8|0;a=a+24|0;do{if(i[n>>0]|0)break a;if(!(i[p>>0]|0)){if(i[h>>0]|0?(k[o>>2]&1|0)==0:0)break a}else{if((k[m>>2]|0)==1)break a;if(!(k[o>>2]&2))break a}i[p>>0]=0;i[h>>0]=0;WB(a,b,c,d,e,f);a=a+8|0}while(a>>>0>>0)}while(0);i[p>>0]=g;i[h>>0]=j}return}function TB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a:do if(!(tB(a,k[b+8>>2]|0,e)|0)){g=a+12|0;q=b+24|0;r=b+36|0;s=b+54|0;o=a+8|0;m=a+16|0;if(!(tB(a,k[b>>2]|0,e)|0)){p=k[g>>2]|0;h=a+16+(p<<3)|0;XB(m,b,c,d,e);f=a+24|0;if((p|0)<=1)break;g=k[o>>2]|0;if((g&2|0)==0?(k[r>>2]|0)!=1:0){if(!(g&1))while(1){if(i[s>>0]|0)break a;if((k[r>>2]|0)==1)break a;XB(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}while(1){if(i[s>>0]|0)break a;if((k[r>>2]|0)==1?(k[q>>2]|0)==1:0)break a;XB(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}}while(1){if(i[s>>0]|0)break a;XB(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}}f=b+32|0;if((k[b+16>>2]|0)!=(c|0)?(p=b+20|0,(k[p>>2]|0)!=(c|0)):0){k[f>>2]=d;n=b+44|0;if((k[n>>2]|0)==4)break;d=a+16+(k[g>>2]<<3)|0;j=b+52|0;l=b+53|0;f=0;a=m;h=0;b:while(1){if(a>>>0>=d>>>0){g=18;break}i[j>>0]=0;i[l>>0]=0;WB(a,b,c,c,1,e);if(i[s>>0]|0){g=18;break}do if(i[l>>0]|0){if(!(i[j>>0]|0))if(!(k[o>>2]&1)){f=1;g=18;break b}else{f=1;g=h;break}if((k[q>>2]|0)==1){g=23;break b}if(!(k[o>>2]&2)){g=23;break b}else{f=1;g=1}}else g=h;while(0);a=a+8|0;h=g}do if((g|0)==18){if((!h?(k[p>>2]=c,c=b+40|0,k[c>>2]=(k[c>>2]|0)+1,(k[r>>2]|0)==1):0)?(k[q>>2]|0)==2:0){i[s>>0]=1;if(f){g=23;break}else{f=4;break}}if(f)g=23;else f=4}while(0);if((g|0)==23)f=3;k[n>>2]=f;break}if((d|0)==1)k[f>>2]=1}else vB(0,b,c,d);while(0);return}function UB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!(tB(a,k[b+8>>2]|0,0)|0)){f=k[a+12>>2]|0;e=a+16+(f<<3)|0;VB(a+16|0,b,c,d);if((f|0)>1){f=b+54|0;a=a+24|0;do{VB(a,b,c,d);if(i[f>>0]|0)break a;a=a+8|0}while(a>>>0>>0)}}else uB(0,b,c,d);while(0);return}function VB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=k[a+4>>2]|0;e=f>>8;if(f&1)e=k[(k[c>>2]|0)+e>>2]|0;a=k[a>>2]|0;gd[k[(k[a>>2]|0)+28>>2]&15](a,b,c+e|0,f&2|0?d:2);return}function WB(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 g=0,h=0;h=k[a+4>>2]|0;g=h>>8;if(h&1)g=k[(k[d>>2]|0)+g>>2]|0;a=k[a>>2]|0;Tc[k[(k[a>>2]|0)+20>>2]&15](a,b,c,d+g|0,h&2|0?e:2,f);return}function XB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=k[a+4>>2]|0;f=g>>8;if(g&1)f=k[(k[c>>2]|0)+f>>2]|0;a=k[a>>2]|0;Lc[k[(k[a>>2]|0)+24>>2]&7](a,b,c+f|0,g&2|0?d:2,e);return}function YB(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+4192|0;p=t+4176|0;q=t;r=t+4112|0;s=(d|0)!=0;if((a|0)!=0?(e=(b|0)!=0,o=(c|0)==0,!(e&o)):0){if(e)m=k[c>>2]|0;else m=0;ZB(q);_B(r,q);g=r+48|0;f=r+61|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;i[g+12>>0]=0;i[f>>0]=1;g=r+32|0;h=r+36|0;e=k[h>>2]|0;if(e>>>0<(k[r+40>>2]|0)>>>0){$B(p,q);k[e>>2]=0;k[e+4>>2]=0;l=k[p>>2]|0;k[e+8>>2]=0;k[e+12>>2]=l;k[h>>2]=(k[h>>2]|0)+16}else aC(g,q);j=r+62|0;i[j>>0]=0;i[r+63>>0]=1;k[p>>2]=0;l=a+(Rp(a)|0)|0;bC(a,l,r,p);e=k[p>>2]|0;do if(!((e|0)!=0|(i[j>>0]|0)==0)){g=k[g>>2]|0;if((g|0)!=(k[h>>2]|0)?(k[g>>2]|0)!=(k[g+4>>2]|0):0){i[j>>0]=0;i[f>>0]=0;e=k[r>>2]|0;f=r+4|0;while(1){g=k[f>>2]|0;if((g|0)==(e|0))break;h=g+-24|0;k[f>>2]=h;cC(h)}e=k[r+16>>2]|0;f=r+20|0;while(1){g=k[f>>2]|0;if((g|0)==(e|0))break;h=g+-16|0;k[f>>2]=h;dC(h)}bC(a,l,r,p);if(!(i[j>>0]|0)){e=k[p>>2]|0;n=22;break}else{k[p>>2]=-2;b=0;e=-2;break}}else n=23}else n=22;while(0);if((n|0)==22)if(!e)n=23;else b=0;do if((n|0)==23){f=r+4|0;g=eC((k[f>>2]|0)+-24|0)|0;e=g+1|0;if(e>>>0>m>>>0){b=Qq(b,e)|0;if(!b){k[p>>2]=-1;b=0;e=-1;break}if(!o)k[c>>2]=e}else if(!b){b=0;e=0;break}p=k[f>>2]|0;o=p+-12|0;e=i[o+11>>0]|0;c=e<<24>>24<0;fC(p+-24|0,c?k[o>>2]|0:o,c?k[p+-8>>2]|0:e&255)|0;e=(k[f>>2]|0)+-24|0;if((i[e+11>>0]|0)<0)e=k[e>>2]|0;nF(b|0,e|0,g|0)|0;i[b+g>>0]=0;e=0}while(0);if(s)k[d>>2]=e;gC(r);hC(q)}else if(s){k[d>>2]=-3;b=0}else b=0;u=t;return b|0}function ZB(a){a=a|0;k[a+4096>>2]=a;return}function _B(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;YE(d,b);k[a>>2]=0;k[a+4>>2]=0;e=k[d>>2]|0;k[a+8>>2]=0;k[a+12>>2]=e;$B(d,b);ZE(a+16|0,d);_E(d,b);$E(a+32|0,d);u=c;return}function $B(a,b){a=a|0;b=b|0;k[a>>2]=b;return}function aC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;h=u;u=u+32|0;e=h+20|0;f=h;g=a+4|0;c=((k[g>>2]|0)-(k[a>>2]|0)>>4)+1|0;d=yE(a)|0;if(d>>>0>>0)Sy(a);i=k[a>>2]|0;l=(k[a+8>>2]|0)-i|0;j=l>>3;zE(f,l>>4>>>0>>1>>>0?(j>>>0>>0?c:j):d,(k[g>>2]|0)-i>>4,a+12|0);g=f+8|0;d=k[g>>2]|0;$B(e,b);k[d>>2]=0;k[d+4>>2]=0;e=k[e>>2]|0;k[d+8>>2]=0;k[d+12>>2]=e;k[g>>2]=d+16;AE(a,f);BE(f);u=h;return}function bC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a:do if(a>>>0>>0){b:do if((i[a>>0]|0)!=95){if((xC(a,b,c)|0)!=(b|0)){k[d>>2]=-2;break a}}else{if((b-a|0)<=3){k[d>>2]=-2;break a}e=a+2|0;switch(i[a+1>>0]|0){case 90:{a=uC(e,b,c)|0;if(!((a|0)==(e|0)|(a|0)==(b|0))?(i[a>>0]|0)==46:0)a=vC(a,b,c)|0;if((a|0)==(b|0))break b;k[d>>2]=-2;break a}case 95:{if((i[e>>0]|0)==95?(i[a+3>>0]|0)==90:0){e=a+4|0;a=uC(e,b,c)|0;if(!((a|0)==(e|0)|(a|0)==(b|0))?(wC(a,b,c)|0)==(b|0):0)break b;k[d>>2]=-2;break a}break}default:{}}k[d>>2]=-2;break a}while(0);if((k[d>>2]|0)==0?(k[c>>2]|0)==(k[c+4>>2]|0):0)k[d>>2]=-2}else k[d>>2]=-2;while(0);return}function cC(a){a=a|0;tC(a+12|0);tC(a);return}function dC(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;if(b|0){c=a+4|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-24|0;k[c>>2]=d;cC(d)}d=k[a>>2]|0;sC(a+12|0,d,((k[a+8>>2]|0)-d|0)/24|0)}return}function eC(a){a=a|0;var b=0,c=0;b=i[a+11>>0]|0;if(b<<24>>24<0)c=k[a+4>>2]|0;else c=b&255;b=i[a+12+11>>0]|0;if(b<<24>>24<0)b=k[a+16>>2]|0;else b=b&255;return b+c|0}function fC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+16|0;j=m;l=a+11|0;d=i[l>>0]|0;h=d<<24>>24<0;if(h){e=(k[a+8>>2]&2147483647)+-1|0;f=k[a+4>>2]|0}else{e=10;f=d&255}g=f+c|0;if((e-f|0)>>>0>=c>>>0){if(c|0){if(h)d=k[a>>2]|0;else d=a;rr(d+f|0,b,c)|0;if((i[l>>0]|0)<0)k[a+4>>2]=g;else i[l>>0]=g;i[j>>0]=0;Tr(d+g|0,j)}}else pC(a,e,g-e|0,f,f,0,c,b);u=m;return a|0}function gC(a){a=a|0;iC(a+32|0);jC(a+16|0);dC(a);return}function hC(a){a=a|0;k[a+4096>>2]=0;return}function iC(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;if(b|0){c=a+4|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-16|0;k[c>>2]=d;jC(d)}d=k[a>>2]|0;oC(a+12|0,d,(k[a+8>>2]|0)-d>>4)}return}function jC(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;if(b|0){c=a+4|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-16|0;k[c>>2]=d;dC(d)}d=k[a>>2]|0;kC(a+12|0,d,(k[a+8>>2]|0)-d>>4)}return}function kC(a,b,c){a=a|0;b=b|0;c=c|0;lC(k[a>>2]|0,b,c<<4);return}function lC(a,b,c){a=a|0;b=b|0;c=c|0;if(mC(a,b)|0){c=b+(nC(c)|0)|0;a=a+4096|0;if((c|0)==(k[a>>2]|0))k[a>>2]=b}else Pq(b);return}function mC(a,b){a=a|0;b=b|0;return a>>>0<=b>>>0&(a+4096|0)>>>0>=b>>>0|0}function nC(a){a=a|0;return a+15&-16|0}function oC(a,b,c){a=a|0;b=b|0;c=c|0;lC(k[a>>2]|0,b,c<<4);return}function pC(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;if((-18-b|0)>>>0>>0)HA(a);if((i[a+11>>0]|0)<0)m=k[a>>2]|0;else m=a;if(b>>>0<2147483623){j=c+b|0;l=b<<1;j=j>>>0>>0?l:j;j=j>>>0<11?11:j+16&-16}else j=-17;l=qC(j)|0;if(e|0)rr(l,m,e)|0;if(g|0)rr(l+e|0,h,g)|0;c=d-f|0;d=c-e|0;if(d|0)rr(l+e+g|0,m+e+f|0,d)|0;if((b|0)!=10)rC(m);k[a>>2]=l;k[a+8>>2]=j|-2147483648;g=c+g|0;k[a+4>>2]=g;i[n>>0]=0;Tr(l+g|0,n);u=o;return}function qC(a){a=a|0;return Oq(a)|0}function rC(a){a=a|0;Pq(a);return}function sC(a,b,c){a=a|0;b=b|0;c=c|0;lC(k[a>>2]|0,b,c*24|0);return}function tC(a){a=a|0;if((i[a+11>>0]|0)<0)rC(k[a>>2]|0);return}function uC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+64|0;q=A+48|0;y=A+40|0;z=A+32|0;w=A+24|0;x=A+12|0;r=A;if((a|0)!=(b|0)){v=c+56|0;SE(y,v);k[v>>2]=(k[v>>2]|0)+1;d=c+61|0;TE(z,d);if((k[v>>2]|0)>>>0>1)i[d>>0]=1;a:do switch(i[a>>0]|0){case 84:case 71:{b=UE(a,b,c)|0;d=1;break}default:{l=WC(a,b,c)|0;t=k[c+48>>2]|0;v=k[c+52>>2]|0;b:do if((l|0)!=(a|0)){if((l|0)!=(b|0)){switch(i[l>>0]|0){case 46:case 69:{b=l;break b}default:{}}TE(w,d);i[d>>0]=0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[x+(d<<2)>>2]=0;d=d+1|0}s=c+4|0;d=k[s>>2]|0;c:do if((k[c>>2]|0)!=(d|0)){e=d+-24|0;h=i[e+11>>0]|0;j=h<<24>>24<0;if(j)f=k[d+-20>>2]|0;else f=h&255;if(f){if(!(i[c+60>>0]|0)){if(j){f=k[e>>2]|0;g=k[d+-20>>2]|0}else{f=e;g=h&255}if((i[f+g+-1>>0]|0)==62){if(j){f=k[d+-20>>2]|0;g=k[e>>2]|0}else{f=h&255;g=e}if((i[g+(f+-2)>>0]|0)!=45){if(j){f=k[d+-20>>2]|0;e=k[e>>2]|0}else f=h&255;if((i[e+(f+-2)>>0]|0)!=62){g=xC(l,b,c)|0;if((g|0)==(l|0)){b=a;d=0;break}p=k[s>>2]|0;e=p;if(((p-(k[c>>2]|0)|0)/24|0)>>>0<2){b=a;d=0;break}f=e+-24|0;k[r>>2]=k[f>>2];k[r+4>>2]=k[f+4>>2];k[r+8>>2]=k[f+8>>2];d=0;while(1){if((d|0)==3)break;k[f+(d<<2)>>2]=0;d=d+1|0}e=e+-12|0;f=x+11|0;if((i[f>>0]|0)<0){p=k[x>>2]|0;i[q>>0]=0;Tr(p,q);k[x+4>>2]=0}else{i[q>>0]=0;Tr(x,q);i[f>>0]=0}bD(x);k[x>>2]=k[e>>2];k[x+4>>2]=k[e+4>>2];k[x+8>>2]=k[e+8>>2];d=0;while(1){if((d|0)==3)break;k[e+(d<<2)>>2]=0;d=d+1|0}p=i[f>>0]|0;if(!((p<<24>>24<0?k[x+4>>2]|0:p&255)|0))WD(r,32);f=k[s>>2]|0;d=f+-24|0;e=f;while(1){if((e|0)==(d|0))break;p=e+-24|0;k[s>>2]=p;cC(p);e=k[s>>2]|0}e=i[r+11>>0]|0;d=e<<24>>24<0;FE(f+-48|0,0,d?k[r>>2]|0:r,d?k[r+4>>2]|0:e&255)|0;tC(r);e=g;d=k[s>>2]|0}else e=l}else e=l}else e=l}else e=l;WD(d+-24|0,40);if((e|0)!=(b|0)?(i[e>>0]|0)==118:0){b=e+1|0;e=k[c>>2]|0;d=k[s>>2]|0}else m=49;do if((m|0)==49){m=q+11|0;n=q+4|0;o=r+11|0;p=r+4|0;j=1;d=e;d:while(1){f=d;d=k[s>>2]|0;e=k[c>>2]|0;while(1){g=(d-e|0)/24|0;l=xC(f,b,c)|0;d=k[s>>2]|0;e=k[c>>2]|0;h=(d-e|0)/24|0;if((l|0)==(f|0)){m=72;break d}if(h>>>0>g>>>0)break;else f=l}k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;d=0;while(1){if((d|0)==3){d=g;break}k[q+(d<<2)>>2]=0;d=d+1|0}while(1){if(d>>>0>=h>>>0){d=g;break}f=i[m>>0]|0;if((f<<24>>24<0?k[n>>2]|0:f&255)|0)BC(q,29644)|0;PC(r,(k[c>>2]|0)+(d*24|0)|0);f=i[o>>0]|0;e=f<<24>>24<0;fC(q,e?k[r>>2]|0:r,e?k[p>>2]|0:f&255)|0;tC(r);d=d+1|0}while(1){if(d>>>0>=h>>>0)break;f=k[s>>2]|0;e=f+-24|0;while(1){if((f|0)==(e|0))break;g=f+-24|0;k[s>>2]=g;cC(g);f=k[s>>2]|0}d=d+1|0}f=i[m>>0]|0;d=k[n>>2]|0;if(!((f<<24>>24<0?d:f&255)|0))d=j;else{e=k[s>>2]|0;if((k[c>>2]|0)==(e|0)){m=84;break}if(!j){BC(e+-24|0,29644)|0;e=k[s>>2]|0;f=i[m>>0]|0;d=k[n>>2]|0}j=f<<24>>24<0;fC(e+-24|0,j?k[q>>2]|0:q,j?d:f&255)|0;d=0}tC(q);j=d;d=l}if((m|0)==72){b=f;break}else if((m|0)==84){tC(q);b=a;d=0;break c}}while(0);if((e|0)!=(d|0)){WD(d+-24|0,41);if(t&1|0)BC((k[s>>2]|0)+-24|0,29367)|0;if(t&2|0)BC((k[s>>2]|0)+-24|0,29374)|0;if(t&4|0)BC((k[s>>2]|0)+-24|0,29384)|0;switch(v|0){case 1:{BC((k[s>>2]|0)+-24|0,30848)|0;break}case 2:{BC((k[s>>2]|0)+-24|0,30851)|0;break}default:{}}d=i[x+11>>0]|0;v=d<<24>>24<0;fC((k[s>>2]|0)+-24|0,v?k[x>>2]|0:x,v?k[x+4>>2]|0:d&255)|0;d=1}else{b=a;d=0}}else{b=a;d=0}}else{b=a;d=0}while(0);tC(x);VE(w);if(!d){d=0;break a}}}else b=a;while(0);d=1}}while(0);VE(z);WE(y);if(d)m=88;else b=a}else{b=a;m=88}u=A;return b|0}function vC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+48|0;e=h+24|0;f=h+12|0;g=h;if(((a|0)!=(b|0)?(i[a>>0]|0)==46:0)?(d=c+4|0,(k[c>>2]|0)!=(k[d>>2]|0)):0){k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;$D(g,a,b);AC(g,0,29417)|0;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];a=0;while(1){if((a|0)==3)break;k[g+(a<<2)>>2]=0;a=a+1|0}BC(f,29420)|0;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];k[e+8>>2]=k[f+8>>2];a=0;while(1){if((a|0)==3)break;k[f+(a<<2)>>2]=0;a=a+1|0}a=i[e+11>>0]|0;c=a<<24>>24<0;fC((k[d>>2]|0)+-24|0,c?k[e>>2]|0:e,c?k[e+4>>2]|0:a&255)|0;tC(e);tC(f);tC(g);a=b}u=h;return a|0}function wC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if((b-a|0)>12){e=0;d=a;while(1){f=d+1|0;if((e|0)>=13)break;if((i[d>>0]|0)==(i[31053+e>>0]|0)){e=e+1|0;d=f}else{d=a;break a}}b:do if((d|0)==(b|0))d=b;else{if((i[d>>0]|0)==95){if((f|0)==(b|0)){d=a;break a}if(((i[f>>0]|0)+-48|0)>>>0>=10){d=a;break a}d=d+2|0}while(1){if((d|0)==(b|0)){d=b;break b}if(((i[d>>0]|0)+-48|0)>>>0>=10)break b;d=d+1|0}}while(0);e=k[c+4>>2]|0;if((k[c>>2]|0)!=(e|0))AC(e+-24|0,0,31067)|0;else d=a}else d=a;while(0);return d|0} -function xC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+144|0;y=z+128|0;w=z+104|0;v=z+40|0;h=z+88|0;p=z+24|0;n=z+76|0;o=z+12|0;j=z;m=z+64|0;a:do if((a|0)!=(b|0)){x=c+16|0;switch(i[a>>0]|0){case 75:case 86:case 114:{k[y>>2]=0;d=yC(a,b,y)|0;b:do if((d|0)!=(a|0)?(q=(i[d>>0]|0)==70,s=c+4|0,l=((k[s>>2]|0)-(k[c>>2]|0)|0)/24|0,r=xC(d,b,c)|0,s=((k[s>>2]|0)-(k[c>>2]|0)|0)/24|0,(r|0)!=(d|0)):0){p=c+20|0;a=k[p>>2]|0;c:do if(q){d=a+-16|0;while(1){if((a|0)==(d|0)){a=d;break c}v=a+-16|0;k[p>>2]=v;dC(v);a=k[p>>2]|0}}while(0);k[w>>2]=k[c+12>>2];if(a>>>0<(k[c+24>>2]|0)>>>0){k[a>>2]=0;k[a+4>>2]=0;x=k[w>>2]|0;k[a+8>>2]=0;k[a+12>>2]=x;k[p>>2]=(k[p>>2]|0)+16}else zC(x,w);o=k[y>>2]|0;m=(o&1|0)==0;n=(o&2|0)==0;o=(o&4|0)==0;while(1){if(l>>>0>=s>>>0){a=r;break b}if(q){e=k[c>>2]|0;j=e+(l*24|0)+12|0;f=i[j+11>>0]|0;a=f<<24>>24<0;if(a){g=k[e+(l*24|0)+16>>2]|0;d=k[j>>2]|0}else{g=f&255;d=j}h=g+-2|0;if((i[d+h>>0]|0)==38)a=g+-3|0;else{if(a){d=k[j>>2]|0;a=k[e+(l*24|0)+16>>2]|0}else{d=j;a=f&255}a=(i[d+a+-1>>0]|0)==38?h:g}if(!m){AC(j,a,29367)|0;a=a+6|0}if(!n){AC((k[c>>2]|0)+(l*24|0)+12|0,a,29374)|0;a=a+9|0}if(!o)AC((k[c>>2]|0)+(l*24|0)+12|0,a,29384)|0}else{if(!m)BC((k[c>>2]|0)+(l*24|0)|0,29367)|0;if(!n)BC((k[c>>2]|0)+(l*24|0)|0,29374)|0;if(!o)BC((k[c>>2]|0)+(l*24|0)|0,29384)|0}a=k[p>>2]|0;d=(k[c>>2]|0)+(l*24|0)|0;e=a+-12|0;f=k[e>>2]|0;if((f|0)==(k[a+-8>>2]|0))DC(a+-16|0,d);else{CC(f,d);k[e>>2]=(k[e>>2]|0)+24}l=l+1|0}}while(0);break a}default:{}}d=EC(a,b,c)|0;if((d|0)==(a|0)){q=a+1|0;d=(q|0)!=(b|0);d:do switch(i[a>>0]|0){case 65:{e=FC(a,b,c)|0;if((e|0)==(a|0))break a;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}case 67:{f=xC(q,b,c)|0;if((f|0)==(q|0))break a;d=c+4|0;e=k[d>>2]|0;if((k[c>>2]|0)==(e|0))break a;BC(e+-24|0,29394)|0;a=(k[d>>2]|0)+-24|0;k[w>>2]=k[c+12>>2];GC(y,a,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=f;break a}case 70:{e=IC(a,b,c)|0;if((e|0)==(a|0))break a;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}case 71:{f=xC(q,b,c)|0;if((f|0)==(q|0))break a;d=c+4|0;e=k[d>>2]|0;if((k[c>>2]|0)==(e|0))break a;BC(e+-24|0,29403)|0;a=(k[d>>2]|0)+-24|0;k[w>>2]=k[c+12>>2];GC(y,a,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=f;break a}case 77:{e=JC(a,b,c)|0;if((e|0)==(a|0))break a;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}case 79:{n=c+4|0;e=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;m=xC(q,b,c)|0;n=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;if((m|0)==(q|0))break a;a=k[c+12>>2]|0;k[y>>2]=a;l=c+20|0;d=k[l>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=a;k[l>>2]=(k[l>>2]|0)+16}else zC(x,y);h=y+11|0;j=y+4|0;g=e;while(1){if(g>>>0>=n>>>0){a=m;break a}KC(y,(k[c>>2]|0)+(g*24|0)+12|0,2);a=Br(29414)|0;x=i[h>>0]|0;if((a|0)==((x<<24>>24<0?k[j>>2]|0:x&255)|0))a=(LC(y,29414,a)|0)==0;else a=0;tC(y);d=k[c>>2]|0;if(!a){a=d+(g*24|0)+12|0;if((i[a+11>>0]|0)<0)a=k[a>>2]|0;if((i[a>>0]|0)==40){BC(d+(g*24|0)|0,29422)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}}else{BC(d+(g*24|0)|0,29417)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}BC((k[c>>2]|0)+(g*24|0)|0,29424)|0;a=k[l>>2]|0;d=(k[c>>2]|0)+(g*24|0)|0;e=a+-12|0;f=k[e>>2]|0;if((f|0)==(k[a+-8>>2]|0))DC(a+-16|0,d);else{CC(f,d);k[e>>2]=(k[e>>2]|0)+24}g=g+1|0}}case 80:{p=c+4|0;e=((k[p>>2]|0)-(k[c>>2]|0)|0)/24|0;o=xC(q,b,c)|0;p=((k[p>>2]|0)-(k[c>>2]|0)|0)/24|0;if((o|0)==(q|0))break a;a=k[c+12>>2]|0;k[y>>2]=a;n=c+20|0;d=k[n>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=a;k[n>>2]=(k[n>>2]|0)+16}else zC(x,y);h=y+11|0;j=y+4|0;l=y+11|0;m=y+4|0;g=e;while(1){if(g>>>0>=p>>>0){a=o;break a}KC(y,(k[c>>2]|0)+(g*24|0)+12|0,2);a=Br(29414)|0;x=i[h>>0]|0;if((a|0)==((x<<24>>24<0?k[j>>2]|0:x&255)|0))a=(LC(y,29414,a)|0)==0;else a=0;tC(y);d=k[c>>2]|0;if(!a){a=d+(g*24|0)+12|0;if((i[a+11>>0]|0)<0)a=k[a>>2]|0;if((i[a>>0]|0)==40){BC(d+(g*24|0)|0,29422)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}}else{BC(d+(g*24|0)|0,29417)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}if((i[q>>0]|0)==85){KC(y,(k[c>>2]|0)+(g*24|0)|0,12);a=Br(29427)|0;x=i[l>>0]|0;if((a|0)==((x<<24>>24<0?k[m>>2]|0:x&255)|0))d=(LC(y,29427,a)|0)!=0;else d=1;tC(y);a=(k[c>>2]|0)+(g*24|0)|0;if(d)t=112;else MC(a)}else{a=(k[c>>2]|0)+(g*24|0)|0;t=112}if((t|0)==112){t=0;BC(a,29440)|0}a=k[n>>2]|0;d=(k[c>>2]|0)+(g*24|0)|0;e=a+-12|0;f=k[e>>2]|0;if((f|0)==(k[a+-8>>2]|0))DC(a+-16|0,d);else{CC(f,d);k[e>>2]=(k[e>>2]|0)+24}g=g+1|0}}case 82:{n=c+4|0;e=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;m=xC(q,b,c)|0;n=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;if((m|0)==(q|0))break a;a=k[c+12>>2]|0;k[y>>2]=a;l=c+20|0;d=k[l>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=a;k[l>>2]=(k[l>>2]|0)+16}else zC(x,y);h=y+11|0;j=y+4|0;g=e;while(1){if(g>>>0>=n>>>0){a=m;break a}KC(y,(k[c>>2]|0)+(g*24|0)+12|0,2);a=Br(29414)|0;x=i[h>>0]|0;if((a|0)==((x<<24>>24<0?k[j>>2]|0:x&255)|0))a=(LC(y,29414,a)|0)==0;else a=0;tC(y);d=k[c>>2]|0;if(!a){a=d+(g*24|0)+12|0;if((i[a+11>>0]|0)<0)a=k[a>>2]|0;if((i[a>>0]|0)==40){BC(d+(g*24|0)|0,29422)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}}else{BC(d+(g*24|0)|0,29417)|0;AC((k[c>>2]|0)+(g*24|0)+12|0,0,29420)|0}BC((k[c>>2]|0)+(g*24|0)|0,29442)|0;a=k[l>>2]|0;d=(k[c>>2]|0)+(g*24|0)|0;e=a+-12|0;f=k[e>>2]|0;if((f|0)==(k[a+-8>>2]|0))DC(a+-16|0,d);else{CC(f,d);k[e>>2]=(k[e>>2]|0)+24}g=g+1|0}}case 84:{n=c+4|0;h=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;l=NC(a,b,c)|0;j=((k[n>>2]|0)-(k[c>>2]|0)|0)/24|0;if((l|0)==(a|0))break a;m=c+12|0;a=k[m>>2]|0;k[y>>2]=a;o=c+20|0;d=k[o>>2]|0;p=c+24|0;if(d>>>0<(k[p>>2]|0)>>>0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=a;k[o>>2]=(k[o>>2]|0)+16}else zC(x,y);a=h;while(1){if(a>>>0>=j>>>0)break;d=k[o>>2]|0;e=(k[c>>2]|0)+(a*24|0)|0;f=d+-12|0;g=k[f>>2]|0;if((g|0)==(k[d+-8>>2]|0))DC(d+-16|0,e);else{CC(g,e);k[f>>2]=(k[f>>2]|0)+24}a=a+1|0}if(!((j|0)==(h+1|0)&(i[c+63>>0]|0)!=0)){a=l;break a}a=OC(l,b,c)|0;if((a|0)==(l|0)){a=l;break a}PC(y,(k[n>>2]|0)+-24|0);d=k[n>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;c=f+-24|0;k[n>>2]=c;cC(c);f=k[n>>2]|0}c=i[y+11>>0]|0;t=c<<24>>24<0;fC(d+-48|0,t?k[y>>2]|0:y,t?k[y+4>>2]|0:c&255)|0;d=(k[n>>2]|0)+-24|0;k[v>>2]=k[m>>2];GC(w,d,v);d=k[o>>2]|0;if(d>>>0<(k[p>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[w+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[w>>2];c=w+4|0;k[x>>2]=k[c>>2];x=w+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[w>>2]=0;k[o>>2]=(k[o>>2]|0)+16}else HC(x,w);dC(w);tC(y);break a}case 85:{if(!d)break a;d=QC(q,b,c)|0;if((d|0)==(q|0))break a;g=xC(d,b,c)|0;if((g|0)==(d|0))break a;f=c+4|0;d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(y,d+-24|0);a=k[f>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;b=e+-24|0;k[f>>2]=b;cC(b);e=k[f>>2]|0}KC(w,a+-48|0,9);a=Br(29444)|0;b=i[w+11>>0]|0;if((a|0)==((b<<24>>24<0?k[w+4>>2]|0:b&255)|0)){b=(LC(w,29444,a)|0)==0;tC(w);if(b){PC(w,(k[f>>2]|0)+-24|0);d=k[f>>2]|0;a=d+-24|0;while(1){if((d|0)==(a|0))break;b=d+-24|0;k[f>>2]=b;cC(b);d=k[f>>2]|0}a=w+11|0;b=i[a>>0]|0;s=b<<24>>24<0;r=k[w>>2]|0;b=QC(s?r+9|0:w+9|0,(s?r:w)+(s?k[w+4>>2]|0:b&255)|0,c)|0;if((b|0)==(((i[a>>0]|0)<0?k[w>>2]|0:w)+9|0)){RC(p,y,29454);a=i[a>>0]|0;b=a<<24>>24<0;fC(p,b?k[w>>2]|0:w,b?k[w+4>>2]|0:a&255)|0;k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}SC(v,m);a=k[f>>2]|0;if(a>>>0<(k[c+8>>2]|0)>>>0){UC(a,v);k[f>>2]=(k[f>>2]|0)+24}else VC(c,v);cC(v);tC(m);tC(p)}else{RC(o,y,29456);PC(j,(k[f>>2]|0)+-24|0);a=i[j+11>>0]|0;b=a<<24>>24<0;fC(o,b?k[j>>2]|0:j,b?k[j+4>>2]|0:a&255)|0;k[p>>2]=k[o>>2];k[p+4>>2]=k[o+4>>2];k[p+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}BC(p,29458)|0;k[n>>2]=k[p>>2];k[n+4>>2]=k[p+4>>2];k[n+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}SC(v,n);TC((k[f>>2]|0)+-24|0,v);cC(v);tC(n);tC(p);tC(j);tC(o)}tC(w)}else t=166}else{tC(w);t=166}if((t|0)==166){RC(v,y,29454);PC(p,(k[f>>2]|0)+-24|0);a=i[p+11>>0]|0;t=a<<24>>24<0;fC(v,t?k[p>>2]|0:p,t?k[p+4>>2]|0:a&255)|0;k[h>>2]=k[v>>2];k[h+4>>2]=k[v+4>>2];k[h+8>>2]=k[v+8>>2];a=0;while(1){if((a|0)==3)break;k[v+(a<<2)>>2]=0;a=a+1|0}SC(w,h);TC((k[f>>2]|0)+-24|0,w);cC(w);tC(h);tC(p);tC(v)}a=(k[f>>2]|0)+-24|0;k[v>>2]=k[c+12>>2];GC(w,a,v);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[w+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[w>>2];c=w+4|0;k[x>>2]=k[c>>2];x=w+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[w>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,w);dC(w);tC(y);a=g;break a}case 83:{if(d?(i[q>>0]|0)==116:0){e=WC(a,b,c)|0;if((e|0)==(a|0))break a;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}e=XC(a,b,c)|0;if((e|0)==(a|0))break a;a=OC(e,b,c)|0;if((a|0)==(e|0)){a=e;break a}g=c+4|0;d=k[g>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2){a=e;break a}PC(y,d+-24|0);d=k[g>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;t=f+-24|0;k[g>>2]=t;cC(t);f=k[g>>2]|0}e=i[y+11>>0]|0;t=e<<24>>24<0;fC(d+-48|0,t?k[y>>2]|0:y,t?k[y+4>>2]|0:e&255)|0;d=(k[g>>2]|0)+-24|0;k[v>>2]=k[c+12>>2];GC(w,d,v);d=c+20|0;e=k[d>>2]|0;if(e>>>0<(k[c+24>>2]|0)>>>0){k[e>>2]=0;x=e+4|0;k[x>>2]=0;c=k[w+12>>2]|0;k[e+8>>2]=0;k[e+12>>2]=c;k[e>>2]=k[w>>2];c=w+4|0;k[x>>2]=k[c>>2];x=w+8|0;k[e+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[w>>2]=0;k[d>>2]=(k[d>>2]|0)+16}else HC(x,w);dC(w);tC(y);break a}case 68:{if(d)switch(i[q>>0]|0){case 112:{l=c+4|0;e=((k[l>>2]|0)-(k[c>>2]|0)|0)/24|0;v=a+2|0;j=xC(v,b,c)|0;l=((k[l>>2]|0)-(k[c>>2]|0)|0)/24|0;if((j|0)==(v|0))break d;a=k[c+12>>2]|0;k[y>>2]=a;h=c+20|0;d=k[h>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=a;k[h>>2]=(k[h>>2]|0)+16}else zC(x,y);a=e;while(1){if(a>>>0>=l>>>0){a=j;break a}d=k[h>>2]|0;e=(k[c>>2]|0)+(a*24|0)|0;f=d+-12|0;g=k[f>>2]|0;if((g|0)==(k[d+-8>>2]|0))DC(d+-16|0,e);else{CC(g,e);k[f>>2]=(k[f>>2]|0)+24}a=a+1|0}}case 84:case 116:{e=YC(a,b,c)|0;if((e|0)==(a|0))break d;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}case 118:{e=ZC(a,b,c)|0;if((e|0)==(a|0))break d;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[w>>2]=k[c+12>>2];GC(y,d+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e;break a}default:break d}break}default:{}}while(0);d=EC(a,b,c)|0;if((d|0)==(a|0)){e=WC(a,b,c)|0;if((e|0)!=(a|0)?(f=k[c+4>>2]|0,(k[c>>2]|0)!=(f|0)):0){k[w>>2]=k[c+12>>2];GC(y,f+-24|0,w);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;x=d+4|0;k[x>>2]=0;c=k[y+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=c;k[d>>2]=k[y>>2];c=y+4|0;k[x>>2]=k[c>>2];x=y+8|0;k[d+8>>2]=k[x>>2];k[x>>2]=0;k[c>>2]=0;k[y>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(x,y);dC(y);a=e}}else a=d}else a=d}while(0);u=z;return a|0}function yC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;k[c>>2]=0;if((a|0)!=(b|0)){d=i[a>>0]|0;if(d<<24>>24==114){k[c>>2]=4;d=a+1|0;a=d;b=4;d=i[d>>0]|0}else b=0;if(d<<24>>24==86){b=b|2;k[c>>2]=b;d=a+1|0;a=d;d=i[d>>0]|0}if(d<<24>>24==75){k[c>>2]=b|1;a=a+1|0}}return a|0}function zC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=u;u=u+32|0;d=g;e=a+4|0;f=((k[e>>2]|0)-(k[a>>2]|0)>>4)+1|0;c=GE(a)|0;if(c>>>0>>0)Sy(a);h=k[a>>2]|0;j=(k[a+8>>2]|0)-h|0;i=j>>3;HE(d,j>>4>>>0>>1>>>0?(i>>>0>>0?f:i):c,(k[e>>2]|0)-h>>4,a+12|0);f=d+8|0;e=k[f>>2]|0;k[e>>2]=0;k[e+4>>2]=0;c=k[b>>2]|0;k[e+8>>2]=0;k[e+12>>2]=c;k[f>>2]=e+16;IE(a,d);JE(d);u=g;return}function AC(a,b,c){a=a|0;b=b|0;c=c|0;return FE(a,b,c,Br(c)|0)|0}function BC(a,b){a=a|0;b=b|0;return fC(a,b,Br(b)|0)|0}function CC(a,b){a=a|0;b=b|0;_D(a,b);_D(a+12|0,b+12|0);return}function DC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=u;u=u+32|0;d=g;e=a+4|0;f=(((k[e>>2]|0)-(k[a>>2]|0)|0)/24|0)+1|0;c=dE(a)|0;if(c>>>0>>0)Sy(a);h=k[a>>2]|0;j=((k[a+8>>2]|0)-h|0)/24|0;i=j<<1;eE(d,j>>>0>>1>>>0?(i>>>0>>0?f:i):c,((k[e>>2]|0)-h|0)/24|0,a+12|0);f=d+8|0;e=k[f>>2]|0;CC(e,b);k[f>>2]=e+24;fE(a,d);gE(d);u=g;return}function EC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=u;u=u+32|0;f=g;a:do if((a|0)!=(b|0)){e=a+1|0;do switch(i[a>>0]|0){case 118:{kE(f,30859);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 119:{NE(f);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 98:{kE(f,30864);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 99:{kE(f,30633);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 97:{SD(f,30638);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 104:{oE(f,30650);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 115:{CD(f,30664);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 116:{TD(f,30670);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 105:{OE(f,30869);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 106:{UD(f,30873);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 108:{kE(f,30886);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 109:{oE(f,30891);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 120:{PD(f,30905);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 121:{PE(f);b=c+4|0;a=k[b>>2]|0;if(a>>>0<(k[c+8>>2]|0)>>>0){UC(a,f);k[b>>2]=(k[b>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 110:{QE(f,30699);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 111:{QD(f,30708);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 102:{CD(f,30915);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 100:{RE(f);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 101:{SD(f,30921);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 103:{OD(f,30933);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 122:{OE(f,30944);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=e;break a}case 117:{f=QC(e,b,c)|0;a=(f|0)==(e|0)?a:f;break a}case 68:{if((e|0)==(b|0))break a;d=a+2|0;switch(i[e>>0]|0){case 100:{PD(f,30948);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 101:{OD(f,30958);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 102:{PD(f,30969);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 104:{PD(f,30979);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 105:{QE(f,30989);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 115:{QE(f,30998);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 97:{kE(f,31007);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}case 110:{TD(f,31012);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=d;break a}default:break a}}default:break a}while(0)}while(0);u=g;return a|0}function FC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+112|0;q=r+96|0;o=r+72|0;p=r+48|0;h=r+36|0;j=r+24|0;l=r+12|0;n=r;do if(((a|0)!=(b|0)?(i[a>>0]|0)==65:0)?(g=a+1|0,(g|0)!=(b|0)):0){d=i[g>>0]|0;if(d<<24>>24==95){p=a+2|0;e=xC(p,b,c)|0;if((e|0)==(p|0))break;f=c+4|0;d=k[f>>2]|0;if((k[c>>2]|0)==(d|0))break;KC(q,d+-12|0,2);a=Br(29414)|0;p=i[q+11>>0]|0;if((a|0)==((p<<24>>24<0?k[q+4>>2]|0:p&255)|0)){p=(LC(q,29414,a)|0)==0;tC(q);if(p)ME((k[f>>2]|0)+-12|0)}else tC(q);AC((k[f>>2]|0)+-12|0,0,30855)|0;a=e;break}if((d+-49&255)<9){f=_C(g,b)|0;if((f|0)==(b|0))break;if((i[f>>0]|0)!=95)break;n=f+1|0;b=xC(n,b,c)|0;if((b|0)==(n|0))break;e=c+4|0;d=k[e>>2]|0;if((k[c>>2]|0)==(d|0))break;KC(q,d+-12|0,2);a=Br(29414)|0;n=i[q+11>>0]|0;if((a|0)==((n<<24>>24<0?k[q+4>>2]|0:n&255)|0)){n=(LC(q,29414,a)|0)==0;tC(q);if(n)ME((k[e>>2]|0)+-12|0)}else tC(q);d=(k[e>>2]|0)+-12|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$D(p,g,f);AC(p,0,29414)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}BC(o,29469)|0;k[q>>2]=k[o>>2];k[q+4>>2]=k[o+4>>2];k[q+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[q+11>>0]|0;n=a<<24>>24<0;FE(d,0,n?k[q>>2]|0:q,n?k[q+4>>2]|0:a&255)|0;tC(q);tC(o);tC(p);a=b;break}d=aD(g,b,c)|0;if(((!((d|0)==(g|0)|(d|0)==(b|0))?(i[d>>0]|0)==95:0)?(g=d+1|0,m=xC(g,b,c)|0,(m|0)!=(g|0)):0)?(f=c+4|0,e=k[f>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){UC(o,e+-24|0);e=k[f>>2]|0;a=e+-24|0;d=e;while(1){if((d|0)==(a|0))break;c=d+-24|0;k[f>>2]=c;cC(c);d=k[f>>2]|0}UC(p,e+-48|0);a=k[f>>2]|0;d=a+-24|0;e=d+11|0;if((i[e>>0]|0)<0){c=k[d>>2]|0;i[q>>0]=0;Tr(c,q);k[a+-20>>2]=0}else{i[q>>0]=0;Tr(d,q);i[e>>0]=0}bD(d);k[d>>2]=k[o>>2];k[d+4>>2]=k[o+4>>2];k[d+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}d=o+12|0;KC(q,d,2);a=Br(29414)|0;c=i[q+11>>0]|0;if((a|0)==((c<<24>>24<0?k[q+4>>2]|0:c&255)|0)){c=(LC(q,29414,a)|0)==0;tC(q);if(c)ME(d)}else tC(q);PC(n,p);AC(n,0,29414)|0;k[l>>2]=k[n>>2];k[l+4>>2]=k[n+4>>2];k[l+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(l,29469)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}a=i[d+11>>0]|0;c=a<<24>>24<0;fC(j,c?k[d>>2]|0:d,c?k[o+16>>2]|0:a&255)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}a=k[f>>2]|0;d=a+-12|0;e=d+11|0;if((i[e>>0]|0)<0){c=k[d>>2]|0;i[q>>0]=0;Tr(c,q);k[a+-8>>2]=0}else{i[q>>0]=0;Tr(d,q);i[e>>0]=0}bD(d);k[d>>2]=k[h>>2];k[d+4>>2]=k[h+4>>2];k[d+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}tC(h);tC(j);tC(l);tC(n);cC(p);cC(o);a=m}}while(0);u=r;return a|0}function GC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;k[a>>2]=0;d=a+4|0;k[d>>2]=0;c=k[c>>2]|0;k[a+8>>2]=0;k[a+12>>2]=c;LE(a);CC(k[d>>2]|0,b);k[d>>2]=(k[d>>2]|0)+24;return}function HC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=u;u=u+32|0;d=g;e=a+4|0;f=((k[e>>2]|0)-(k[a>>2]|0)>>4)+1|0;c=GE(a)|0;if(c>>>0>>0)Sy(a);h=k[a>>2]|0;j=(k[a+8>>2]|0)-h|0;i=j>>3;HE(d,j>>4>>>0>>1>>>0?(i>>>0>>0?f:i):c,(k[e>>2]|0)-h>>4,a+12|0);f=d+8|0;e=k[f>>2]|0;k[e>>2]=0;h=e+4|0;k[h>>2]=0;c=k[b+12>>2]|0;k[e+8>>2]=0;k[e+12>>2]=c;k[e>>2]=k[b>>2];c=b+4|0;k[h>>2]=k[c>>2];h=b+8|0;k[e+8>>2]=k[h>>2];k[h>>2]=0;k[c>>2]=0;k[b>>2]=0;k[f>>2]=e+16;IE(a,d);JE(d);u=g;return}function IC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;t=u;u=u+32|0;s=t+12|0;q=t;a:do if(((a|0)!=(b|0)?(i[a>>0]|0)==70:0)?(d=a+1|0,(d|0)!=(b|0)):0){if((i[d>>0]|0)==89){d=a+2|0;if((d|0)==(b|0))break}e=xC(d,b,c)|0;if((e|0)!=(d|0)){k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;$C(s,29422,Br(29422)|0);p=c+4|0;n=s+11|0;o=s+4|0;l=q+11|0;m=q+4|0;j=0;d=e;b:while(1)c:while(1){if((d|0)==(b|0)){r=10;break b}f=i[d>>0]|0;g=d+1|0;switch(f<<24>>24){case 69:{r=14;break b}case 118:{d=g;continue c}default:{}}e=(g|0)==(b|0);if(!(e|f<<24>>24!=82)?(i[g>>0]|0)==69:0){j=1;d=g;continue b}if(!(e|f<<24>>24!=79)?(i[g>>0]|0)==69:0){j=2;d=g;continue b}e=((k[p>>2]|0)-(k[c>>2]|0)|0)/24|0;g=xC(d,b,c)|0;h=((k[p>>2]|0)-(k[c>>2]|0)|0)/24|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;else d=e;while(1){if(d>>>0>=h>>>0){d=e;break}f=i[n>>0]|0;if((f<<24>>24<0?k[o>>2]|0:f&255)>>>0>1)BC(s,29644)|0;PC(q,(k[c>>2]|0)+(d*24|0)|0);f=i[l>>0]|0;v=f<<24>>24<0;fC(s,v?k[q>>2]|0:q,v?k[m>>2]|0:f&255)|0;tC(q);d=d+1|0}while(1){if(d>>>0>=h>>>0){d=g;continue c}f=k[p>>2]|0;e=f+-24|0;while(1){if((f|0)==(e|0))break;v=f+-24|0;k[p>>2]=v;cC(v);f=k[p>>2]|0}d=d+1|0}}d:do if((r|0)==10){e=k[p>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break d;v=e+-24|0;k[p>>2]=v;cC(v);e=k[p>>2]|0}}else if((r|0)==14){BC(s,29420)|0;switch(j&3){case 1:{BC(s,30848)|0;break}case 2:{BC(s,30851)|0;break}default:{}}d=k[p>>2]|0;if((k[c>>2]|0)!=(d|0)){BC(d+-24|0,29454)|0;a=i[n>>0]|0;v=a<<24>>24<0;FE((k[p>>2]|0)+-12|0,0,v?k[s>>2]|0:s,v?k[o>>2]|0:a&255)|0;tC(s);a=g;break a}}while(0);tC(s)}}while(0);u=t;return a|0}function JC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+112|0;m=q+96|0;o=q+72|0;p=q+48|0;l=q+36|0;f=q+24|0;g=q+12|0;h=q;if(((((a|0)!=(b|0)?(i[a>>0]|0)==77:0)?(r=a+1|0,d=xC(r,b,c)|0,(d|0)!=(r|0)):0)?(n=xC(d,b,c)|0,(n|0)!=(d|0)):0)?(j=c+4|0,e=k[j>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){UC(o,e+-24|0);a=k[j>>2]|0;b=a+-24|0;d=a;while(1){if((d|0)==(b|0))break;r=d+-24|0;k[j>>2]=r;cC(r);d=k[j>>2]|0}UC(p,a+-48|0);e=o+12|0;a:do if((i[((i[e+11>>0]|0)<0?k[e>>2]|0:e)>>0]|0)==40){BC(o,29422)|0;k[g>>2]=k[o>>2];k[g+4>>2]=k[o+4>>2];k[g+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}PC(h,p);a=i[h+11>>0]|0;r=a<<24>>24<0;fC(g,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];a=0;while(1){if((a|0)==3)break;k[g+(a<<2)>>2]=0;a=a+1|0}BC(f,30844)|0;k[l>>2]=k[f>>2];k[l+4>>2]=k[f+4>>2];k[l+8>>2]=k[f+8>>2];a=0;while(1){if((a|0)==3)break;k[f+(a<<2)>>2]=0;a=a+1|0}a=k[j>>2]|0;b=a+-24|0;d=b+11|0;if((i[d>>0]|0)<0){r=k[b>>2]|0;i[m>>0]=0;Tr(r,m);k[a+-20>>2]=0}else{i[m>>0]=0;Tr(b,m);i[d>>0]=0}bD(b);k[b>>2]=k[l>>2];k[b+4>>2]=k[l+4>>2];k[b+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}tC(l);tC(f);tC(h);tC(g);AC(e,0,29420)|0;k[l>>2]=k[e>>2];k[l+4>>2]=k[e+4>>2];k[l+8>>2]=k[e+8>>2];a=0;while(1){if((a|0)==3)break;k[e+(a<<2)>>2]=0;a=a+1|0}a=k[j>>2]|0;b=a+-12|0;d=b+11|0;if((i[d>>0]|0)<0){r=k[b>>2]|0;i[m>>0]=0;Tr(r,m);k[a+-8>>2]=0}else{i[m>>0]=0;Tr(b,m);i[d>>0]=0}bD(b);k[b>>2]=k[l>>2];k[b+4>>2]=k[l+4>>2];k[b+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}tC(l)}else{BC(o,29454)|0;k[g>>2]=k[o>>2];k[g+4>>2]=k[o+4>>2];k[g+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}PC(h,p);a=i[h+11>>0]|0;r=a<<24>>24<0;fC(g,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];a=0;while(1){if((a|0)==3)break;k[g+(a<<2)>>2]=0;a=a+1|0}BC(f,30844)|0;k[l>>2]=k[f>>2];k[l+4>>2]=k[f+4>>2];k[l+8>>2]=k[f+8>>2];a=0;while(1){if((a|0)==3)break;k[f+(a<<2)>>2]=0;a=a+1|0}a=k[j>>2]|0;b=a+-24|0;d=b+11|0;if((i[d>>0]|0)<0){r=k[b>>2]|0;i[m>>0]=0;Tr(r,m);k[a+-20>>2]=0}else{i[m>>0]=0;Tr(b,m);i[d>>0]=0}bD(b);k[b>>2]=k[l>>2];k[b+4>>2]=k[l+4>>2];k[b+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}tC(l);tC(f);tC(h);tC(g);a=k[j>>2]|0;b=a+-12|0;d=b+11|0;if((i[d>>0]|0)<0){r=k[b>>2]|0;i[m>>0]=0;Tr(r,m);k[a+-8>>2]=0}else{i[m>>0]=0;Tr(b,m);i[d>>0]=0}bD(b);k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];a=0;while(1){if((a|0)==3)break a;k[e+(a<<2)>>2]=0;a=a+1|0}}while(0);cC(p);cC(o);a=n}u=q;return a|0}function KC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;d=i[b+11>>0]|0;e=d<<24>>24<0;d=e?k[b+4>>2]|0:d&255;$C(a,e?k[b>>2]|0:b,d>>>0>>0?d:c);return}function LC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=a+11|0;d=i[e>>0]|0;if(d<<24>>24<0)f=k[a+4>>2]|0;else f=d&255;if((c|0)==-1){IA(a);d=i[e>>0]|0}if(d<<24>>24<0)d=k[a>>2]|0;else d=a;e=f>>>0>c>>>0;d=vA(d,b,e?c:f)|0;if(!d)return (f>>>0>>0?-1:e&1)|0;else return d|0;return 0}function MC(a){a=a|0;EE(a,Br(30841)|0);return}function NC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+48|0;n=o+16|0;j=o;a:do if((b-a|0)>1?(i[a>>0]|0)==84:0){d=i[a+1>>0]|0;m=c+62|0;g=c+32|0;if(d<<24>>24==95){d=k[c+36>>2]|0;if((k[g>>2]|0)==(d|0))break;e=k[d+-16>>2]|0;a=a+2|0;if((e|0)==(k[d+-12>>2]|0)){DE(n);d=c+4|0;e=k[d>>2]|0;if(e>>>0<(k[c+8>>2]|0)>>>0){UC(e,n);k[d>>2]=(k[d>>2]|0)+24}else VC(c,n);cC(n);i[m>>0]=1;break}f=k[e+4>>2]|0;b=c+4|0;g=c+8|0;d=k[e>>2]|0;while(1){if((d|0)==(f|0))break a;e=k[b>>2]|0;if((e|0)==(k[g>>2]|0))DC(c,d);else{CC(e,d);k[b>>2]=(k[b>>2]|0)+24}d=d+24|0}}d=(d<<24>>24)+-48|0;if(d>>>0<10){e=a+2|0;while(1){l=e+1|0;if((e|0)==(b|0))break a;e=i[e>>0]|0;f=(e<<24>>24)+-48|0;if(f>>>0>=10)break;d=f+(d*10|0)|0;e=l}if(e<<24>>24==95?(h=k[c+36>>2]|0,(k[g>>2]|0)!=(h|0)):0){d=d+1|0;b=k[h+-16>>2]|0;g=b;if(d>>>0>=(k[h+-12>>2]|0)-b>>4>>>0){k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;$D(j,a,l);SC(n,j);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,n);k[a>>2]=(k[a>>2]|0)+24}else VC(c,n);cC(n);tC(j);i[m>>0]=1;a=l;break}e=k[g+(d<<4)+4>>2]|0;f=c+4|0;b=c+8|0;a=k[g+(d<<4)>>2]|0;while(1){if((a|0)==(e|0)){a=l;break a}d=k[f>>2]|0;if((d|0)==(k[b>>2]|0))DC(c,a);else{CC(d,a);k[f>>2]=(k[f>>2]|0)+24}a=a+24|0}}}}while(0);u=o;return a|0}function OC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+64|0;A=D+32|0;B=D+16|0;y=D+12|0;C=D;do if((b-a|0)>1?(i[a>>0]|0)==73:0){v=c+61|0;w=c+32|0;t=c+36|0;a:do if(i[v>>0]|0){e=k[t>>2]|0;d=k[e+-16>>2]|0;e=e+-12|0;while(1){f=k[e>>2]|0;if((f|0)==(d|0))break a;x=f+-16|0;k[e>>2]=x;dC(x)}}while(0);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;$C(B,29456,Br(29456)|0);x=c+4|0;n=c+12|0;r=B+11|0;s=B+4|0;o=A+11|0;p=A+4|0;q=c+40|0;f=a+1|0;b:while(1){if((i[f>>0]|0)==69)break;if(i[v>>0]|0){k[y>>2]=k[n>>2];d=k[t>>2]|0;if(d>>>0<(k[q>>2]|0)>>>0){vE(A,y);k[d>>2]=0;k[d+4>>2]=0;m=k[A>>2]|0;k[d+8>>2]=0;k[d+12>>2]=m;k[t>>2]=(k[t>>2]|0)+16}else wE(w,y)}l=((k[x>>2]|0)-(k[c>>2]|0)|0)/24|0;m=xE(f,b,c)|0;j=((k[x>>2]|0)-(k[c>>2]|0)|0)/24|0;c:do if(i[v>>0]|0){e=k[t>>2]|0;d=e+-16|0;while(1){if((e|0)==(d|0))break c;h=e+-16|0;k[t>>2]=h;jC(h);e=k[t>>2]|0}}while(0);if((m|0)==(f|0)|(m|0)==(b|0)){z=48;break}d:do if(!(i[v>>0]|0))d=l;else{e=k[t>>2]|0;d=k[n>>2]|0;k[A>>2]=d;f=e+-12|0;g=k[f>>2]|0;if(g>>>0<(k[e+-8>>2]|0)>>>0){k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=d;k[f>>2]=(k[f>>2]|0)+16}else zC(e+-16|0,A);d=l;while(1){if(d>>>0>=j>>>0){d=l;break d}e=k[(k[t>>2]|0)+-12>>2]|0;f=(k[c>>2]|0)+(d*24|0)|0;g=e+-12|0;h=k[g>>2]|0;if((h|0)==(k[e+-8>>2]|0))DC(e+-16|0,f);else{CC(h,f);k[g>>2]=(k[g>>2]|0)+24}d=d+1|0}}while(0);while(1){if(d>>>0>=j>>>0){d=j;break}h=i[r>>0]|0;if((h<<24>>24<0?k[s>>2]|0:h&255)>>>0>1)BC(B,29644)|0;PC(A,(k[c>>2]|0)+(d*24|0)|0);h=i[o>>0]|0;g=h<<24>>24<0;fC(B,g?k[A>>2]|0:A,g?k[p>>2]|0:h&255)|0;tC(A);d=d+1|0}while(1){if((d|0)==(l|0)){f=m;continue b}f=k[x>>2]|0;e=f+-24|0;while(1){if((f|0)==(e|0))break;j=f+-24|0;k[x>>2]=j;cC(j);f=k[x>>2]|0}d=d+-1|0}}if((z|0)==48){tC(B);break}a=f+1|0;z=i[r>>0]|0;y=z<<24>>24<0;if((i[(y?k[B>>2]|0:B)+(y?k[s>>2]|0:z&255)+-1>>0]|0)==62)BC(B,30835)|0;else BC(B,29458)|0;k[C>>2]=k[B>>2];k[C+4>>2]=k[B+4>>2];k[C+8>>2]=k[B+8>>2];d=0;while(1){if((d|0)==3)break;k[B+(d<<2)>>2]=0;d=d+1|0}SC(A,C);d=k[x>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,A);k[x>>2]=(k[x>>2]|0)+24}else VC(c,A);cC(A);tC(C);tC(B)}while(0);u=D;return a|0}function PC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=b+12|0;c=i[e+11>>0]|0;d=c<<24>>24<0;fC(b,d?k[e>>2]|0:e,d?k[b+16>>2]|0:c&255)|0;k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function QC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+64|0;j=m+40|0;l=m+16|0;g=m;a:do if(((a|0)!=(b|0)?(d=(i[a>>0]|0)+-48|0,d>>>0<10):0)?(e=a+1|0,(e|0)!=(b|0)):0){h=d;while(1){f=(i[e>>0]|0)+-48|0;if(f>>>0>=10)break;d=e+1|0;if((d|0)==(b|0))break a;h=f+(h*10|0)|0;e=d}if((b-e|0)>>>0>=h>>>0){k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;$C(j,e,h);KC(l,j,10);a=Br(30802)|0;b=i[l+11>>0]|0;if((a|0)==((b<<24>>24<0?k[l+4>>2]|0:b&255)|0))a=(LC(l,30802,a)|0)==0;else a=0;tC(l);if(a){uE(l);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,l);k[a>>2]=(k[a>>2]|0)+24}else VC(c,l);cC(l)}else{k[g>>2]=k[j>>2];k[g+4>>2]=k[j+4>>2];k[g+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(l,g);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,l);k[a>>2]=(k[a>>2]|0)+24}else VC(c,l);cC(l);tC(g)}tC(j);a=e+h|0}}while(0);u=m;return a|0}function RC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[a+(d<<2)>>2]=0;d=d+1|0}f=b+11|0;e=i[f>>0]|0;e=e<<24>>24<0?k[b+4>>2]|0:e&255;d=Br(c)|0;dD(a,(i[f>>0]|0)<0?k[b>>2]|0:b,e,e+d|0);fC(a,c,d)|0;return}function SC(a,b){a=a|0;b=b|0;var c=0;k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];c=0;while(1){if((c|0)==3)break;k[b+(c<<2)>>2]=0;c=c+1|0}a=a+12|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;c=0;while(1){if((c|0)==3)break;k[a+(c<<2)>>2]=0;c=c+1|0}return}function TC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=u;u=u+16|0;e=f;c=a+11|0;if((i[c>>0]|0)<0){d=k[a>>2]|0;i[e>>0]=0;Tr(d,e);k[a+4>>2]=0}else{i[e>>0]=0;Tr(a,e);i[c>>0]=0}bD(a);k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];c=0;while(1){if((c|0)==3)break;k[b+(c<<2)>>2]=0;c=c+1|0}d=a+12|0;b=b+12|0;c=d+11|0;if((i[c>>0]|0)<0){c=k[d>>2]|0;i[e>>0]=0;Tr(c,e);k[a+16>>2]=0}else{i[e>>0]=0;Tr(d,e);i[c>>0]=0}bD(d);k[d>>2]=k[b>>2];k[d+4>>2]=k[b+4>>2];k[d+8>>2]=k[b+8>>2];c=0;while(1){if((c|0)==3)break;k[b+(c<<2)>>2]=0;c=c+1|0}u=f;return}function UC(a,b){a=a|0;b=b|0;var c=0;k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];c=0;while(1){if((c|0)==3)break;k[b+(c<<2)>>2]=0;c=c+1|0}c=a+12|0;a=b+12|0;k[c>>2]=k[a>>2];k[c+4>>2]=k[a+4>>2];k[c+8>>2]=k[a+8>>2];c=0;while(1){if((c|0)==3)break;k[a+(c<<2)>>2]=0;c=c+1|0}return}function VC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=u;u=u+32|0;d=g;e=a+4|0;f=(((k[e>>2]|0)-(k[a>>2]|0)|0)/24|0)+1|0;c=dE(a)|0;if(c>>>0>>0)Sy(a);h=k[a>>2]|0;j=((k[a+8>>2]|0)-h|0)/24|0;i=j<<1;eE(d,j>>>0>>1>>>0?(i>>>0>>0?f:i):c,((k[e>>2]|0)-h|0)/24|0,a+12|0);f=d+8|0;e=k[f>>2]|0;UC(e,b);k[f>>2]=e+24;fE(a,d);gE(d);u=g;return}function WC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=u;u=u+32|0;j=l+8|0;f=l;a:do if((b-a|0)>1){e=(i[a>>0]|0)==76?a+1|0:a;switch(i[e>>0]|0){case 78:{j=pE(e,b,c)|0;a=(j|0)==(e|0)?a:j;break a}case 90:{j=qE(e,b,c)|0;a=(j|0)==(e|0)?a:j;break a}default:{g=rE(e,b,c)|0;if((g|0)==(e|0)){d=XC(e,b,c)|0;if((d|0)==(e|0)|(d|0)==(b|0))break a;if((i[d>>0]|0)!=73)break a;b=OC(d,b,c)|0;if((b|0)==(d|0))break a;f=c+4|0;d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(j,d+-24|0);a=k[f>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;c=e+-24|0;k[f>>2]=c;cC(c);e=k[f>>2]|0}c=i[j+11>>0]|0;h=c<<24>>24<0;fC(a+-48|0,h?k[j>>2]|0:j,h?k[j+4>>2]|0:c&255)|0;tC(j);a=b;break a}if((g|0)==(b|0)){a=b;break a}if((i[g>>0]|0)!=73){a=g;break a}h=c+4|0;d=k[h>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[f>>2]=k[c+12>>2];GC(j,d+-24|0,f);d=c+20|0;e=k[d>>2]|0;if(e>>>0<(k[c+24>>2]|0)>>>0){k[e>>2]=0;m=e+4|0;k[m>>2]=0;f=k[j+12>>2]|0;k[e+8>>2]=0;k[e+12>>2]=f;k[e>>2]=k[j>>2];f=j+4|0;k[m>>2]=k[f>>2];m=j+8|0;k[e+8>>2]=k[m>>2];k[m>>2]=0;k[f>>2]=0;k[j>>2]=0;k[d>>2]=(k[d>>2]|0)+16}else HC(c+16|0,j);dC(j);f=OC(g,b,c)|0;if((f|0)==(g|0))break a;d=k[h>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(j,d+-24|0);a=k[h>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;m=e+-24|0;k[h>>2]=m;cC(m);e=k[h>>2]|0}m=i[j+11>>0]|0;c=m<<24>>24<0;fC(a+-48|0,c?k[j>>2]|0:j,c?k[j+4>>2]|0:m&255)|0;tC(j);a=f;break a}}}while(0);u=l;return a|0}function XC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+32|0;f=m;a:do if((b-a|0)>1?(i[a>>0]|0)==83:0){e=i[a+1>>0]|0;h=a+2|0;j=c+16|0;switch(e|0){case 97:{TD(f,30748);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 98:{QD(f,30763);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 115:{SD(f,30242);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 105:{UD(f,30338);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 111:{UD(f,30415);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 100:{oE(f,30492);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,f);k[a>>2]=(k[a>>2]|0)+24}else VC(c,f);cC(f);a=h;break a}case 95:{d=k[j>>2]|0;if((d|0)==(k[c+20>>2]|0))break a;e=k[d+4>>2]|0;f=c+4|0;g=c+8|0;a=k[d>>2]|0;while(1){if((a|0)==(e|0)){a=h;break a}d=k[f>>2]|0;if((d|0)==(k[g>>2]|0))DC(c,a);else{CC(d,a);k[f>>2]=(k[f>>2]|0)+24}a=a+24|0}}default:{d=(e+-48|0)>>>0<10;if(!d?(Eo(e)|0)==0:0)break a;e=(d?-48:-55)+e|0;while(1){l=h+1|0;if((h|0)==(b|0))break a;d=i[h>>0]|0;f=d<<24>>24;g=(f+-48|0)>>>0<10;if(!g?(Eo(f)|0)==0:0)break;h=l;e=f+(e*36|0)+(g?-48:-55)|0}if(d<<24>>24!=95)break a;e=e+1|0;j=k[j>>2]|0;d=j;if(e>>>0>=(k[c+20>>2]|0)-j>>4>>>0)break a;f=k[d+(e<<4)+4>>2]|0;g=c+4|0;h=c+8|0;a=k[d+(e<<4)>>2]|0;while(1){if((a|0)==(f|0)){a=l;break a}d=k[g>>2]|0;if((d|0)==(k[h>>2]|0))DC(c,a);else{CC(d,a);k[g>>2]=(k[g>>2]|0)+24}a=a+24|0}}}}while(0);u=m;return a|0}function YC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=u;u=u+64|0;g=m+40|0;h=m+12|0;j=m+24|0;l=m;a:do if((b-a|0)>3?(i[a>>0]|0)==68:0){switch(i[a+1>>0]|0){case 84:case 116:break;default:break a}n=a+2|0;e=aD(n,b,c)|0;if((!((e|0)==(n|0)|(e|0)==(b|0))?(i[e>>0]|0)==69:0)?(f=c+4|0,d=k[f>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,30738)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(g,h);TC((k[f>>2]|0)+-24|0,g);cC(g);tC(h);tC(j);tC(l);a=e+1|0}}while(0);u=m;return a|0}function ZC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+64|0;n=q+40|0;p=q+12|0;o=q;j=q+24|0;a:do if(((b-a|0)>3?(i[a>>0]|0)==68:0)?(i[a+1>>0]|0)==118:0){d=a+2|0;f=i[d>>0]|0;if((f+-49&255)<9){e=_C(d,b)|0;if((e|0)==(b|0))break;if((i[e>>0]|0)!=95)break;h=e-d|0;f=e+1|0;if((f|0)==(b|0))break;if((i[f>>0]|0)!=112){g=xC(f,b,c)|0;if((g|0)==(f|0))break;e=c+4|0;if((k[c>>2]|0)==(k[e>>2]|0))break;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;$C(o,d,h);AC(o,0,29460)|0;k[p>>2]=k[o>>2];k[p+4>>2]=k[o+4>>2];k[p+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}BC(p,29469)|0;k[n>>2]=k[p>>2];k[n+4>>2]=k[p+4>>2];k[n+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}a=i[n+11>>0]|0;c=a<<24>>24<0;fC((k[e>>2]|0)+-24|0,c?k[n>>2]|0:n,c?k[n+4>>2]|0:a&255)|0;tC(n);tC(p);tC(o);a=g;break}a=e+2|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;$C(o,d,h);AC(o,0,29471)|0;k[p>>2]=k[o>>2];k[p+4>>2]=k[o+4>>2];k[p+8>>2]=k[o+8>>2];d=0;while(1){if((d|0)==3)break;k[o+(d<<2)>>2]=0;d=d+1|0}BC(p,29469)|0;k[j>>2]=k[p>>2];k[j+4>>2]=k[p+4>>2];k[j+8>>2]=k[p+8>>2];d=0;while(1){if((d|0)==3)break;k[p+(d<<2)>>2]=0;d=d+1|0}SC(n,j);d=c+4|0;e=k[d>>2]|0;if(e>>>0<(k[c+8>>2]|0)>>>0){UC(e,n);k[d>>2]=(k[d>>2]|0)+24}else VC(c,n);cC(n);tC(j);tC(p);tC(o);break};k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;e=0;while(1){if((e|0)==3)break;k[p+(e<<2)>>2]=0;e=e+1|0}b:do if(f<<24>>24!=95?(h=aD(d,b,c)|0,(h|0)!=(d|0)):0){f=c+4|0;d=k[f>>2]|0;if((k[c>>2]|0)!=(d|0)){PC(o,d+-24|0);d=p+11|0;if((i[d>>0]|0)<0){j=k[p>>2]|0;i[n>>0]=0;Tr(j,n);k[p+4>>2]=0}else{i[n>>0]=0;Tr(p,n);i[d>>0]=0}bD(p);k[p>>2]=k[o>>2];k[p+4>>2]=k[o+4>>2];k[p+8>>2]=k[o+8>>2];d=0;while(1){if((d|0)==3)break;k[o+(d<<2)>>2]=0;d=d+1|0}tC(o);e=k[f>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0)){d=h;g=43;break b}j=e+-24|0;k[f>>2]=j;cC(j);e=k[f>>2]|0}}}else g=43;while(0);do if((g|0)==43){if((((d|0)!=(b|0)?(i[d>>0]|0)==95:0)?(l=d+1|0,(l|0)!=(b|0)):0)?(m=xC(l,b,c)|0,(m|0)!=(l|0)):0){d=c+4|0;if((k[c>>2]|0)==(k[d>>2]|0))break;cD(o,29460,p);BC(o,29469)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[n+11>>0]|0;c=a<<24>>24<0;fC((k[d>>2]|0)+-24|0,c?k[n>>2]|0:n,c?k[n+4>>2]|0:a&255)|0;tC(n);tC(o);a=m}tC(p);break a}while(0);tC(p)}while(0);u=q;return a|0}function _C(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=(b|0)?(c=(i[a>>0]|0)==110?a+1|0:a,(c|0)!=(b|0)):0){d=i[c>>0]|0;c=c+1|0;if(d<<24>>24!=48)if((d+-49&255)<9)while(1){if((c|0)==(b|0)){c=b;break a}if(((i[c>>0]|0)+-48|0)>>>0>=10)break a;c=c+1|0}else c=a}else c=a;while(0);return c|0}function $C(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=u;u=u+16|0;d=f;if(c>>>0<=4294967279)if(c>>>0<11)i[a+11>>0]=c;else e=5;else{HA(a);e=5}if((e|0)==5){g=c+16&-16;e=qC(g)|0;k[a>>2]=e;k[a+8>>2]=g|-2147483648;k[a+4>>2]=c;a=e}rr(a,b,c)|0;i[d>>0]=0;Tr(a+c|0,d);u=f;return}function aD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+208|0;y=B+176|0;z=B+112|0;A=B+88|0;w=B+64|0;x=B+48|0;p=B+160|0;v=B+36|0;m=B+148|0;n=B+136|0;q=B+124|0;r=B+24|0;s=B+12|0;t=B;h=b;d=h-a|0;a:do if((d|0)>1){o=a+2|0;if((d|0)>3?(i[a>>0]|0)==103:0){l=(i[a+1>>0]|0)==115;d=l?o:a}else{d=a;l=0}e=d+1|0;f=a+3|0;g=(o|0)!=(b|0);j=d+2|0;do switch(i[d>>0]|0){case 76:{a=eD(a,b,c)|0;break a}case 84:{a=NC(a,b,c)|0;break a}case 102:{a=fD(a,b,c)|0;break a}case 97:switch(i[e>>0]|0){case 97:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29424,Br(29424)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 100:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29442,Br(29442)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 110:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29442,Br(29442)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 78:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29485,Br(29485)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 83:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29488,Br(29488)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 116:{a=iD(a,b,c)|0;break a}case 122:{a=jD(a,b,c)|0;break a}default:break a}case 99:switch(i[e>>0]|0){case 99:{a=kD(a,b,c)|0;break a}case 108:{a=lD(a,b,c)|0;break a}case 109:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29490,Br(29490)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 111:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29492,Br(29492)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 118:{a=mD(a,b,c)|0;break a}default:break a}case 100:switch(i[e>>0]|0){case 97:{f=aD(j,b,c)|0;if((f|0)==(j|0))break a;d=c+4|0;if((k[c>>2]|0)==(k[d>>2]|0))break a;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;b:do if(l)$C(w,29494,Br(29494)|0);else{a=0;while(1){if((a|0)==3)break b;k[w+(a<<2)>>2]=0;a=a+1|0}}while(0);BC(w,29497)|0;k[A>>2]=k[w>>2];k[A+4>>2]=k[w+4>>2];k[A+8>>2]=k[w+8>>2];a=0;while(1){if((a|0)==3)break;k[w+(a<<2)>>2]=0;a=a+1|0}PC(x,(k[d>>2]|0)+-24|0);a=i[x+11>>0]|0;v=a<<24>>24<0;fC(A,v?k[x>>2]|0:x,v?k[x+4>>2]|0:a&255)|0;k[z>>2]=k[A>>2];k[z+4>>2]=k[A+4>>2];k[z+8>>2]=k[A+8>>2];a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}a=k[d>>2]|0;d=a+-24|0;e=d+11|0;if((i[e>>0]|0)<0){v=k[d>>2]|0;i[y>>0]=0;Tr(v,y);k[a+-20>>2]=0}else{i[y>>0]=0;Tr(d,y);i[e>>0]=0}bD(d);k[d>>2]=k[z>>2];k[d+4>>2]=k[z+4>>2];k[d+8>>2]=k[z+8>>2];a=0;while(1){if((a|0)==3)break;k[z+(a<<2)>>2]=0;a=a+1|0}tC(z);tC(x);tC(A);tC(w);a=f;break a}case 99:{a=nD(a,b,c)|0;break a}case 101:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29440,Br(29440)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 108:{f=aD(j,b,c)|0;if((f|0)==(j|0))break a;d=c+4|0;if((k[c>>2]|0)==(k[d>>2]|0))break a;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;c:do if(l)$C(w,29494,Br(29494)|0);else{a=0;while(1){if((a|0)==3)break c;k[w+(a<<2)>>2]=0;a=a+1|0}}while(0);BC(w,29507)|0;k[A>>2]=k[w>>2];k[A+4>>2]=k[w+4>>2];k[A+8>>2]=k[w+8>>2];a=0;while(1){if((a|0)==3)break;k[w+(a<<2)>>2]=0;a=a+1|0}PC(x,(k[d>>2]|0)+-24|0);a=i[x+11>>0]|0;v=a<<24>>24<0;fC(A,v?k[x>>2]|0:x,v?k[x+4>>2]|0:a&255)|0;k[z>>2]=k[A>>2];k[z+4>>2]=k[A+4>>2];k[z+8>>2]=k[A+8>>2];a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}a=k[d>>2]|0;d=a+-24|0;e=d+11|0;if((i[e>>0]|0)<0){v=k[d>>2]|0;i[y>>0]=0;Tr(v,y);k[a+-20>>2]=0}else{i[y>>0]=0;Tr(d,y);i[e>>0]=0}bD(d);k[d>>2]=k[z>>2];k[d+4>>2]=k[z+4>>2];k[d+8>>2]=k[z+8>>2];a=0;while(1){if((a|0)==3)break;k[z+(a<<2)>>2]=0;a=a+1|0}tC(z);tC(x);tC(A);tC(w);a=f;break a}case 110:{a=oD(a,b,c)|0;break a}case 115:{a=pD(a,b,c)|0;break a}case 116:{a=qD(a,b,c)|0;break a}case 118:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29515,Br(29515)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 86:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29517,Br(29517)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 101:switch(i[e>>0]|0){case 111:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29520,Br(29520)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 79:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29522,Br(29522)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 113:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29525,Br(29525)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 103:switch(i[e>>0]|0){case 101:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29528,Br(29528)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 116:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29458,Br(29458)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 105:{if((i[e>>0]|0)!=120)break a;d=aD(o,b,c)|0;if((d|0)==(o|0))break a;f=aD(d,b,c)|0;g=c+4|0;if((f|0)==(d|0)){e=k[g>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;A=e+-24|0;k[g>>2]=A;cC(A);e=k[g>>2]|0}}d=k[g>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(y,d+-24|0);a=k[g>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;c=e+-24|0;k[g>>2]=c;cC(c);e=k[g>>2]|0}PC(z,a+-48|0);cD(v,29422,z);BC(v,29531)|0;k[x>>2]=k[v>>2];k[x+4>>2]=k[v+4>>2];k[x+8>>2]=k[v+8>>2];a=0;while(1){if((a|0)==3)break;k[v+(a<<2)>>2]=0;a=a+1|0}a=i[y+11>>0]|0;c=a<<24>>24<0;fC(x,c?k[y>>2]|0:y,c?k[y+4>>2]|0:a&255)|0;k[w>>2]=k[x>>2];k[w+4>>2]=k[x+4>>2];k[w+8>>2]=k[x+8>>2];a=0;while(1){if((a|0)==3)break;k[x+(a<<2)>>2]=0;a=a+1|0}BC(w,29469)|0;k[p>>2]=k[w>>2];k[p+4>>2]=k[w+4>>2];k[p+8>>2]=k[w+8>>2];a=0;while(1){if((a|0)==3)break;k[w+(a<<2)>>2]=0;a=a+1|0}SC(A,p);TC((k[g>>2]|0)+-24|0,A);cC(A);tC(p);tC(w);tC(x);tC(v);tC(z);tC(y);a=f;break a}case 108:switch(i[e>>0]|0){case 101:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29534,Br(29534)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 115:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29537,Br(29537)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 83:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29540,Br(29540)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 116:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29456,Br(29456)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 109:switch(i[e>>0]|0){case 105:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29544,Br(29544)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 73:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29546,Br(29546)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 108:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29440,Br(29440)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 76:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29549,Br(29549)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 109:{if(g?(i[o>>0]|0)==95:0){k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29552,Br(29552)|0);A=hD(f,b,y,c)|0;tC(y);a=(A|0)==(f|0)?a:A;break a}f=aD(o,b,c)|0;if((f|0)==(o|0))break a;e=c+4|0;d=k[e>>2]|0;if((k[c>>2]|0)==(d|0))break a;PC(A,d+-24|0);AC(A,0,29422)|0;k[z>>2]=k[A>>2];k[z+4>>2]=k[A+4>>2];k[z+8>>2]=k[A+8>>2];a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}BC(z,29555)|0;k[m>>2]=k[z>>2];k[m+4>>2]=k[z+4>>2];k[m+8>>2]=k[z+8>>2];a=0;while(1){if((a|0)==3)break;k[z+(a<<2)>>2]=0;a=a+1|0}SC(y,m);TC((k[e>>2]|0)+-24|0,y);cC(y);tC(m);tC(z);tC(A);a=f;break a}default:break a}case 110:switch(i[e>>0]|0){case 119:case 97:{a=rD(a,b,c)|0;break a}case 101:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29559,Br(29559)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 103:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29544,Br(29544)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 116:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29562,Br(29562)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 120:{A=sD(o,b,c)|0;a=(A|0)==(o|0)?a:A;break a}default:break a}case 111:switch(i[e>>0]|0){case 110:{a=oD(a,b,c)|0;break a}case 111:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29564,Br(29564)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 114:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29567,Br(29567)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 82:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29569,Br(29569)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 112:switch(i[e>>0]|0){case 109:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29572,Br(29572)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 108:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29576,Br(29576)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 76:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29578,Br(29578)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 112:{if(g?(i[o>>0]|0)==95:0){k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29581,Br(29581)|0);A=hD(f,b,y,c)|0;tC(y);a=(A|0)==(f|0)?a:A;break a}f=aD(o,b,c)|0;if((f|0)==(o|0))break a;e=c+4|0;d=k[e>>2]|0;if((k[c>>2]|0)==(d|0))break a;PC(A,d+-24|0);AC(A,0,29422)|0;k[z>>2]=k[A>>2];k[z+4>>2]=k[A+4>>2];k[z+8>>2]=k[A+8>>2];a=0;while(1){if((a|0)==3)break;k[A+(a<<2)>>2]=0;a=a+1|0}BC(z,29584)|0;k[n>>2]=k[z>>2];k[n+4>>2]=k[z+4>>2];k[n+8>>2]=k[z+8>>2];a=0;while(1){if((a|0)==3)break;k[z+(a<<2)>>2]=0;a=a+1|0}SC(y,n);TC((k[e>>2]|0)+-24|0,y);cC(y);tC(n);tC(z);tC(A);a=f;break a}case 115:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29576,Br(29576)|0);A=hD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 116:{a=tD(a,b,c)|0;break a}default:break a}case 113:{if((i[e>>0]|0)!=117)break a;d=aD(o,b,c)|0;if((d|0)==(o|0))break a;e=aD(d,b,c)|0;if((e|0)==(d|0)){d=c+4|0;f=k[d>>2]|0;e=f+-24|0;while(1){if((f|0)==(e|0))break a;A=f+-24|0;k[d>>2]=A;cC(A);f=k[d>>2]|0}}f=aD(e,b,c)|0;g=c+4|0;if((f|0)==(e|0)){e=k[g>>2]|0;d=e+-24|0;f=e;while(1){if((f|0)==(d|0))break;A=f+-24|0;k[g>>2]=A;cC(A);f=k[g>>2]|0}e=e+-48|0;while(1){if((d|0)==(e|0))break a;A=d+-24|0;k[g>>2]=A;cC(A);d=k[g>>2]|0}}d=k[g>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<3)break a;PC(y,d+-24|0);a=k[g>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;c=e+-24|0;k[g>>2]=c;cC(c);e=k[g>>2]|0}PC(z,a+-48|0);a=k[g>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;c=e+-24|0;k[g>>2]=c;cC(c);e=k[g>>2]|0}PC(A,a+-48|0);cD(t,29422,A);BC(t,29588)|0;k[s>>2]=k[t>>2];k[s+4>>2]=k[t+4>>2];k[s+8>>2]=k[t+8>>2];a=0;while(1){if((a|0)==3)break;k[t+(a<<2)>>2]=0;a=a+1|0}a=i[z+11>>0]|0;c=a<<24>>24<0;fC(s,c?k[z>>2]|0:z,c?k[z+4>>2]|0:a&255)|0;k[r>>2]=k[s>>2];k[r+4>>2]=k[s+4>>2];k[r+8>>2]=k[s+8>>2];a=0;while(1){if((a|0)==3)break;k[s+(a<<2)>>2]=0;a=a+1|0}BC(r,29594)|0;k[v>>2]=k[r>>2];k[v+4>>2]=k[r+4>>2];k[v+8>>2]=k[r+8>>2];a=0;while(1){if((a|0)==3)break;k[r+(a<<2)>>2]=0;a=a+1|0}a=i[y+11>>0]|0;c=a<<24>>24<0;fC(v,c?k[y>>2]|0:y,c?k[y+4>>2]|0:a&255)|0;k[x>>2]=k[v>>2];k[x+4>>2]=k[v+4>>2];k[x+8>>2]=k[v+8>>2];a=0;while(1){if((a|0)==3)break;k[v+(a<<2)>>2]=0;a=a+1|0}BC(x,29420)|0;k[q>>2]=k[x>>2];k[q+4>>2]=k[x+4>>2];k[q+8>>2]=k[x+8>>2];a=0;while(1){if((a|0)==3)break;k[x+(a<<2)>>2]=0;a=a+1|0}SC(w,q);TC((k[g>>2]|0)+-24|0,w);cC(w);tC(q);tC(x);tC(v);tC(r);tC(s);tC(t);tC(A);tC(z);tC(y);a=f;break a}case 114:switch(i[e>>0]|0){case 99:{a=uD(a,b,c)|0;break a}case 109:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29600,Br(29600)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 77:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29602,Br(29602)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 115:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29605,Br(29605)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}case 83:{k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;$C(y,29608,Br(29608)|0);A=gD(o,b,y,c)|0;tC(y);a=(A|0)==(o|0)?a:A;break a}default:break a}case 115:switch(i[e>>0]|0){case 99:{a=vD(a,b,c)|0;break a}case 112:{a=wD(a,b,c)|0;break a}case 114:{a=oD(a,b,c)|0;break a}case 116:{a=xD(a,b,c)|0;break a}case 122:{a=yD(a,b,c)|0;break a}case 90:{if((h-d|0)<=2)break a;switch(i[j>>0]|0){case 84:{a=zD(a,b,c)|0;break a}case 102:{a=AD(a,b,c)|0;break a}default:break a}}default:break a}case 116:switch(i[e>>0]|0){case 105:case 101:{a=BD(a,b,c)|0;break a}case 114:{CD(y,29612);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,y);k[a>>2]=(k[a>>2]|0)+24}else VC(c,y);cC(y);a=o;break a}case 119:{a=DD(a,b,c)|0;break a}default:break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{a=oD(a,b,c)|0;break a}default:break a}while(0)}while(0);u=B;return a|0}function bD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=a+11|0;d=i[f>>0]|0;if(d<<24>>24<0){h=k[a+4>>2]|0;c=(k[a+8>>2]&2147483647)+-1|0}else{h=d&255;c=10}b=h>>>0<11;g=b?10:(h+16&-16)+-1|0;a:do if((g|0)!=(c|0)){do if(b){b=k[a>>2]|0;if(d<<24>>24<0){e=0;c=b;b=a;d=12}else{rr(a,b,(d&255)+1|0)|0;rC(b);d=14}}else{b=qC(g+1|0)|0;if(g>>>0<=c>>>0&(b|0)==0)break a;c=i[f>>0]|0;if(c<<24>>24<0){e=1;c=k[a>>2]|0;d=12;break}else{rr(b,a,(c&255)+1|0)|0;d=13;break}}while(0);if((d|0)==12){rr(b,c,(k[a+4>>2]|0)+1|0)|0;rC(c);if(e)d=13;else d=14}if((d|0)==13){k[a+8>>2]=g+1|-2147483648;k[a+4>>2]=h;k[a>>2]=b;break}else if((d|0)==14){i[f>>0]=h;break}}while(0);return}function cD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[a+(d<<2)>>2]=0;d=d+1|0}f=Br(b)|0;e=c+11|0;d=i[e>>0]|0;d=d<<24>>24<0?k[c+4>>2]|0:d&255;dD(a,b,f,d+f|0);fC(a,(i[e>>0]|0)<0?k[c>>2]|0:c,d)|0;return}function dD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=u;u=u+16|0;e=g;if(d>>>0<=4294967279)if(d>>>0<11)i[a+11>>0]=c;else f=5;else{HA(a);f=5}if((f|0)==5){d=d+16&-16;f=qC(d)|0;k[a>>2]=f;k[a+8>>2]=d|-2147483648;k[a+4>>2]=c;a=f}rr(a,b,c)|0;i[e>>0]=0;Tr(a+c|0,e);u=g;return}function eD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+96|0;p=q+64|0;j=q+48|0;l=q+36|0;m=q+24|0;n=q+12|0;o=q;a:do if((b-a|0)>3?(i[a>>0]|0)==76:0){d=a+1|0;e=a+3|0;f=a+2|0;do switch(i[d>>0]|0){case 84:break a;case 119:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30614,Br(30614)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 98:{if((i[e>>0]|0)!=69)break a;e=a+4|0;switch(i[f>>0]|0){case 48:{CD(p,30622);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,p);k[a>>2]=(k[a>>2]|0)+24}else VC(c,p);cC(p);a=e;break a}case 49:{kE(p,30628);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,p);k[a>>2]=(k[a>>2]|0)+24}else VC(c,p);cC(p);a=e;break a}default:break a}}case 99:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30633,Br(30633)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 97:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30638,Br(30638)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 104:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30650,Br(30650)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 115:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30664,Br(30664)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 116:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30670,Br(30670)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 105:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,35588,Br(35588)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 106:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30685,Br(30685)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 108:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30687,Br(30687)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 109:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30689,Br(30689)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 120:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30692,Br(30692)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 121:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30695,Br(30695)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 110:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30699,Br(30699)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 111:{k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;$C(p,30708,Br(30708)|0);c=jE(f,b,p,c)|0;tC(p);a=(c|0)==(f|0)?a:c;break a}case 102:{p=lE(f,b,c)|0;a=(p|0)==(f|0)?a:p;break a}case 100:{p=mE(f,b,c)|0;a=(p|0)==(f|0)?a:p;break a}case 101:{p=nE(f,b,c)|0;a=(p|0)==(f|0)?a:p;break a}case 95:{if((i[f>>0]|0)!=90)break a;d=uC(e,b,c)|0;if((d|0)==(e|0)|(d|0)==(b|0))break a;a=(i[d>>0]|0)==69?d+1|0:a;break a}default:{h=xC(d,b,c)|0;if((h|0)==(d|0)|(h|0)==(b|0))break a;if((i[h>>0]|0)==69){a=h+1|0;break a}else f=h;while(1){g=f+1|0;if((f|0)==(b|0))break a;d=i[f>>0]|0;if(((d<<24>>24)+-48|0)>>>0<10)f=g;else break}if(!((f|0)!=(h|0)&d<<24>>24==69))break a;e=c+4|0;d=k[e>>2]|0;if((k[c>>2]|0)==(d|0))break a;PC(n,d+-24|0);AC(n,0,29422)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;$D(o,h,f);a=i[o+11>>0]|0;c=a<<24>>24<0;fC(l,c?k[o>>2]|0:o,c?k[o+4>>2]|0:a&255)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}SC(p,j);TC((k[e>>2]|0)+-24|0,p);cC(p);tC(j);tC(o);tC(l);tC(m);tC(n);a=g;break a}}while(0)}while(0);u=q;return a|0}function fD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+80|0;e=n+64|0;l=n+40|0;j=n+12|0;m=n+24|0;h=n;a:do if((b-a|0)>2?(i[a>>0]|0)==102:0){d=a+2|0;switch(i[a+1>>0]|0){case 112:{d=yC(d,b,e)|0;e=_C(d,b)|0;if((e|0)!=(b|0)?(i[e>>0]|0)==95:0){k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$D(m,d,e);AC(m,0,30611)|0;k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];k[j+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(l,j);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,l);k[a>>2]=(k[a>>2]|0)+24}else VC(c,l);cC(l);tC(j);tC(m);a=e+1|0}break a}case 76:break;default:break a}d=_C(d,b)|0;if((((d|0)!=(b|0)?(i[d>>0]|0)==112:0)?(f=yC(d+1|0,b,e)|0,g=_C(f,b)|0,(g|0)!=(b|0)):0)?(i[g>>0]|0)==95:0){k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$D(m,f,g);AC(m,0,30611)|0;k[h>>2]=k[m>>2];k[h+4>>2]=k[m+4>>2];k[h+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(l,h);a=c+4|0;d=k[a>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,l);k[a>>2]=(k[a>>2]|0)+24}else VC(c,l);cC(l);tC(h);tC(m);a=g+1|0}}while(0);u=n;return a|0}function gD(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,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+96|0;l=r+84|0;p=r+72|0;q=r+60|0;m=r+48|0;n=r+36|0;o=r+24|0;g=r+12|0;h=r;e=aD(a,b,d)|0;a:do if((e|0)!=(a|0)){j=aD(e,b,d)|0;f=d+4|0;if((j|0)==(e|0)){b=k[f>>2]|0;e=b+-24|0;while(1){if((b|0)==(e|0))break a;q=b+-24|0;k[f>>2]=q;cC(q);b=k[f>>2]|0}}b=k[f>>2]|0;if(((b-(k[d>>2]|0)|0)/24|0)>>>0>=2){PC(p,b+-24|0);a=k[f>>2]|0;b=a+-24|0;e=a;while(1){if((e|0)==(b|0))break;d=e+-24|0;k[f>>2]=d;cC(d);e=k[f>>2]|0}PC(q,a+-48|0);a=k[f>>2]|0;d=a+-24|0;b=d+11|0;if((i[b>>0]|0)<0){f=k[d>>2]|0;i[l>>0]=0;Tr(f,l);k[a+-20>>2]=0}else{i[l>>0]=0;Tr(d,l);i[b>>0]=0}a=Br(29458)|0;b=c+11|0;f=i[b>>0]|0;e=c+4|0;if((a|0)==((f<<24>>24<0?k[e>>2]|0:f&255)|0)?(LC(c,29458,a)|0)==0:0)WD(d,40);cD(h,29422,q);BC(h,29708)|0;k[g>>2]=k[h>>2];k[g+4>>2]=k[h+4>>2];k[g+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}a=i[b>>0]|0;f=a<<24>>24<0;fC(g,f?k[c>>2]|0:c,f?k[e>>2]|0:a&255)|0;k[o>>2]=k[g>>2];k[o+4>>2]=k[g+4>>2];k[o+8>>2]=k[g+8>>2];a=0;while(1){if((a|0)==3)break;k[g+(a<<2)>>2]=0;a=a+1|0}BC(o,29417)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[p+11>>0]|0;f=a<<24>>24<0;fC(n,f?k[p>>2]|0:p,f?k[p+4>>2]|0:a&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}a=i[l+11>>0]|0;f=a<<24>>24<0;fC(d,f?k[l>>2]|0:l,f?k[l+4>>2]|0:a&255)|0;tC(l);tC(m);tC(n);tC(o);tC(g);tC(h);a=Br(29458)|0;o=i[b>>0]|0;if((a|0)==((o<<24>>24<0?k[e>>2]|0:o&255)|0)?(LC(c,29458,a)|0)==0:0)WD(d,41);tC(q);tC(p);a=j}}while(0);u=r;return a|0}function hD(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,j=0,l=0,m=0,n=0;n=u;u=u+64|0;f=n+48|0;h=n+36|0;j=n+24|0;l=n+12|0;m=n;g=aD(a,b,d)|0;if((g|0)!=(a|0)?(e=d+4|0,(k[d>>2]|0)!=(k[e>>2]|0)):0){RC(l,c,29422);PC(m,(k[e>>2]|0)+-24|0);a=i[m+11>>0]|0;d=a<<24>>24<0;fC(l,d?k[m>>2]|0:m,d?k[m+4>>2]|0:a&255)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}a=k[e>>2]|0;b=a+-24|0;c=b+11|0;if((i[c>>0]|0)<0){e=k[b>>2]|0;i[f>>0]=0;Tr(e,f);k[a+-20>>2]=0}else{i[f>>0]=0;Tr(b,f);i[c>>0]=0}bD(b);k[b>>2]=k[h>>2];k[b+4>>2]=k[h+4>>2];k[b+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}tC(h);tC(j);tC(m);tC(l);a=g}u=n;return a|0}function iD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=u;u=u+48|0;f=m+36|0;h=m+24|0;j=m+12|0;l=m;if(((((b-a|0)>2?(i[a>>0]|0)==97:0)?(i[a+1>>0]|0)==116:0)?(n=a+2|0,g=xC(n,b,c)|0,(g|0)!=(n|0)):0)?(e=c+4|0,d=k[e>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,30601)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}a=k[e>>2]|0;b=a+-24|0;c=b+11|0;if((i[c>>0]|0)<0){n=k[b>>2]|0;i[f>>0]=0;Tr(n,f);k[a+-20>>2]=0}else{i[f>>0]=0;Tr(b,f);i[c>>0]=0}bD(b);k[b>>2]=k[h>>2];k[b+4>>2]=k[h+4>>2];k[b+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}tC(h);tC(j);tC(l);a=g}u=m;return a|0}function jD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=u;u=u+48|0;f=m+36|0;h=m+24|0;j=m+12|0;l=m;if(((((b-a|0)>2?(i[a>>0]|0)==97:0)?(i[a+1>>0]|0)==122:0)?(n=a+2|0,g=aD(n,b,c)|0,(g|0)!=(n|0)):0)?(e=c+4|0,d=k[e>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,30601)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}a=k[e>>2]|0;b=a+-24|0;c=b+11|0;if((i[c>>0]|0)<0){n=k[b>>2]|0;i[f>>0]=0;Tr(n,f);k[a+-20>>2]=0}else{i[f>>0]=0;Tr(b,f);i[c>>0]=0}bD(b);k[b>>2]=k[h>>2];k[b+4>>2]=k[h+4>>2];k[b+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}tC(h);tC(j);tC(l);a=g}u=m;return a|0}function kD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+112|0;h=q+88|0;j=q+64|0;l=q+48|0;m=q+36|0;n=q+24|0;o=q+12|0;p=q;if((((((b-a|0)>2?(i[a>>0]|0)==99:0)?(i[a+1>>0]|0)==99:0)?(r=a+2|0,d=xC(r,b,c)|0,(d|0)!=(r|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);a=k[g>>2]|0;b=a+-24|0;c=a;while(1){if((c|0)==(b|0))break;r=c+-24|0;k[g>>2]=r;cC(r);c=k[g>>2]|0}PC(p,a+-48|0);AC(p,0,30589)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}BC(o,29669)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[h+11>>0]|0;r=a<<24>>24<0;fC(n,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(j,l);TC((k[g>>2]|0)+-24|0,j);cC(j);tC(l);tC(m);tC(n);tC(o);tC(p);tC(h);a=f}u=q;return a|0}function lD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+32|0;n=p+12|0;h=p;a:do if(((((b-a|0)>3?(i[a>>0]|0)==99:0)?(i[a+1>>0]|0)==108:0)?(l=a+2|0,e=aD(l,b,c)|0,!((e|0)==(l|0)|(e|0)==(b|0))):0)?(m=c+4|0,d=k[m>>2]|0,(k[c>>2]|0)!=(d|0)):0){g=d+-12|0;l=i[g+11>>0]|0;j=l<<24>>24<0;fC(d+-24|0,j?k[g>>2]|0:g,j?k[d+-8>>2]|0:l&255)|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[h+(d<<2)>>2]=0;d=d+1|0}d=k[m>>2]|0;f=d+-12|0;g=f+11|0;if((i[g>>0]|0)<0){l=k[f>>2]|0;i[n>>0]=0;Tr(l,n);k[d+-8>>2]=0}else{i[n>>0]=0;Tr(f,n);i[g>>0]=0}bD(f);k[f>>2]=k[h>>2];k[f+4>>2]=k[h+4>>2];k[f+8>>2]=k[h+8>>2];d=0;while(1){if((d|0)==3)break;k[h+(d<<2)>>2]=0;d=d+1|0}tC(h);BC((k[m>>2]|0)+-24|0,29422)|0;j=n+11|0;l=n+4|0;while(1){if((i[e>>0]|0)==69)break;h=aD(e,b,c)|0;if((h|0)==(e|0)|(h|0)==(b|0))break a;d=k[m>>2]|0;if((k[c>>2]|0)==(d|0))break a;PC(n,d+-24|0);f=k[m>>2]|0;g=f+-24|0;d=f;while(1){if((d|0)==(g|0))break;e=d+-24|0;k[m>>2]=e;cC(e);d=k[m>>2]|0}e=i[j>>0]|0;d=e<<24>>24<0;e=d?k[l>>2]|0:e&255;if(e|0){if((k[c>>2]|0)==(g|0)){o=26;break}fC(f+-48|0,d?k[n>>2]|0:n,e)|0}tC(n);e=h}if((o|0)==26){tC(n);break}d=k[m>>2]|0;if((k[c>>2]|0)!=(d|0)){BC(d+-24|0,29420)|0;a=e+1|0}}while(0);u=p;return a|0}function mD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+112|0;h=q+88|0;j=q+64|0;l=q+48|0;m=q+36|0;n=q+24|0;o=q+12|0;p=q;a:do if((((b-a|0)>2?(i[a>>0]|0)==99:0)?(i[a+1>>0]|0)==118:0)?(f=c+63|0,d=i[f>>0]|0,i[f>>0]=0,g=a+2|0,e=xC(g,b,c)|0,i[f>>0]=d,!((e|0)==(g|0)|(e|0)==(b|0))):0){if((i[e>>0]|0)!=95){d=aD(e,b,c)|0;if((d|0)==(e|0)){d=a;break}}else{d=e+1|0;if((d|0)==(b|0)){d=a;break}e=i[d>>0]|0;b:do if(e<<24>>24==69){e=c+4|0;f=k[e>>2]|0;if(f>>>0<(k[c+8>>2]|0)>>>0){k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;bE(f);k[e>>2]=(k[e>>2]|0)+24;break}else{cE(c);break}}else while(1){if(e<<24>>24==69)break b;e=aD(d,b,c)|0;f=(e|0)==(d|0)|(e|0)==(b|0);if(f){d=a;break a}g=i[(f?d:e)>>0]|0;d=e;e=g}while(0);d=d+1|0}g=c+4|0;e=k[g>>2]|0;if(((e-(k[c>>2]|0)|0)/24|0)>>>0>=2){PC(h,e+-24|0);e=k[g>>2]|0;f=e+-24|0;b=e;while(1){if((b|0)==(f|0))break;c=b+-24|0;k[g>>2]=c;cC(c);b=k[g>>2]|0}PC(p,e+-48|0);AC(p,0,29422)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];e=0;while(1){if((e|0)==3)break;k[p+(e<<2)>>2]=0;e=e+1|0}BC(o,30586)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];e=0;while(1){if((e|0)==3)break;k[o+(e<<2)>>2]=0;e=e+1|0}e=i[h+11>>0]|0;c=e<<24>>24<0;fC(n,c?k[h>>2]|0:h,c?k[h+4>>2]|0:e&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];e=0;while(1){if((e|0)==3)break;k[n+(e<<2)>>2]=0;e=e+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];e=0;while(1){if((e|0)==3)break;k[m+(e<<2)>>2]=0;e=e+1|0}SC(j,l);TC((k[g>>2]|0)+-24|0,j);cC(j);tC(l);tC(m);tC(n);tC(o);tC(p);tC(h)}else d=a}else d=a;while(0);u=q;return d|0}function nD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+112|0;h=q+88|0;j=q+64|0;l=q+48|0;m=q+36|0;n=q+24|0;o=q+12|0;p=q;if((((((b-a|0)>2?(i[a>>0]|0)==100:0)?(i[a+1>>0]|0)==99:0)?(r=a+2|0,d=xC(r,b,c)|0,(d|0)!=(r|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);a=k[g>>2]|0;b=a+-24|0;c=a;while(1){if((c|0)==(b|0))break;r=c+-24|0;k[g>>2]=r;cC(r);c=k[g>>2]|0}PC(p,a+-48|0);AC(p,0,30572)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}BC(o,29669)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[h+11>>0]|0;r=a<<24>>24<0;fC(n,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(j,l);TC((k[g>>2]|0)+-24|0,j);cC(j);tC(l);tC(m);tC(n);tC(o);tC(p);tC(h);a=f}u=q;return a|0}function oD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=u;u=u+32|0;n=o+12|0;m=o;d=b;a:do if((d-a|0)>2){if((i[a>>0]|0)==103){e=(i[a+1>>0]|0)==115;g=e;e=e?a+2|0:a}else{g=0;e=a}f=GD(e,b,c)|0;if((f|0)!=(e|0)){if(!g){a=f;break}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break;AC(d+-24|0,0,29494)|0;a=f;break}if(((d-e|0)>2?(i[e>>0]|0)==115:0)?(i[e+1>>0]|0)==114:0){f=e+2|0;if((i[f>>0]|0)==78){l=e+3|0;d=HD(l,b,c)|0;if((d|0)==(l|0)|(d|0)==(b|0))break;g=OC(d,b,c)|0;l=c+4|0;do if((g|0)==(d|0))j=c;else{d=k[l>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(n,d+-24|0);d=k[l>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;j=f+-24|0;k[l>>2]=j;cC(j);f=k[l>>2]|0}j=i[n+11>>0]|0;h=j<<24>>24<0;fC(d+-48|0,h?k[n>>2]|0:n,h?k[n+4>>2]|0:j&255)|0;if((g|0)!=(b|0)){tC(n);d=g;j=c;break}e=k[l>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break;m=e+-24|0;k[l>>2]=m;cC(m);e=k[l>>2]|0}tC(n);break a}while(0);g=m+11|0;h=m+4|0;while(1){if((i[d>>0]|0)==69)break;f=ID(d,b,c)|0;if((f|0)==(d|0)|(f|0)==(b|0))break a;d=k[l>>2]|0;if(((d-(k[j>>2]|0)|0)/24|0)>>>0<2)break a;PC(n,d+-24|0);e=k[l>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break;p=e+-24|0;k[l>>2]=p;cC(p);e=k[l>>2]|0}AC(n,0,29494)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}d=i[g>>0]|0;p=d<<24>>24<0;fC((k[l>>2]|0)+-24|0,p?k[m>>2]|0:m,p?k[h>>2]|0:d&255)|0;tC(m);tC(n);d=f}p=d+1|0;e=GD(p,b,c)|0;if((e|0)==(p|0)){d=k[l>>2]|0;if((k[c>>2]|0)==(d|0))break;e=d+-24|0;while(1){if((d|0)==(e|0))break a;p=d+-24|0;k[l>>2]=p;cC(p);d=k[l>>2]|0}}d=k[l>>2]|0;if(((d-(k[j>>2]|0)|0)/24|0)>>>0<2)break;PC(n,d+-24|0);d=k[l>>2]|0;a=d+-24|0;while(1){if((d|0)==(a|0))break;p=d+-24|0;k[l>>2]=p;cC(p);d=k[l>>2]|0}AC(n,0,29494)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}a=i[m+11>>0]|0;p=a<<24>>24<0;fC((k[l>>2]|0)+-24|0,p?k[m>>2]|0:m,p?k[m+4>>2]|0:a&255)|0;tC(m);tC(n);a=e;break}d=HD(f,b,c)|0;if((d|0)!=(f|0)){h=OC(d,b,c)|0;if((h|0)!=(d|0)){g=c+4|0;d=k[g>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break;PC(n,d+-24|0);d=k[g>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;p=f+-24|0;k[g>>2]=p;cC(p);f=k[g>>2]|0}p=i[n+11>>0]|0;l=p<<24>>24<0;fC(d+-48|0,l?k[n>>2]|0:n,l?k[n+4>>2]|0:p&255)|0;tC(n);d=h}f=GD(d,b,c)|0;if((f|0)==(d|0)){f=c+4|0;d=k[f>>2]|0;if((k[c>>2]|0)==(d|0))break;e=d+-24|0;while(1){if((d|0)==(e|0))break a;p=d+-24|0;k[f>>2]=p;cC(p);d=k[f>>2]|0}}e=c+4|0;d=k[e>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break;PC(n,d+-24|0);d=k[e>>2]|0;a=d+-24|0;while(1){if((d|0)==(a|0))break;p=d+-24|0;k[e>>2]=p;cC(p);d=k[e>>2]|0}AC(n,0,29494)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}a=i[m+11>>0]|0;p=a<<24>>24<0;fC((k[e>>2]|0)+-24|0,p?k[m>>2]|0:m,p?k[m+4>>2]|0:a&255)|0;tC(m);tC(n);a=f;break}h=ID(f,b,c)|0;if(!((h|0)==(f|0)|(h|0)==(b|0))){if(g){d=c+4|0;e=k[d>>2]|0;if((k[c>>2]|0)==(e|0))break;AC(e+-24|0,0,29494)|0;l=d}else l=c+4|0;g=m+11|0;j=m+4|0;d=h;while(1){if((i[d>>0]|0)==69)break;f=ID(d,b,c)|0;if((f|0)==(d|0)|(f|0)==(b|0))break a;d=k[l>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(n,d+-24|0);e=k[l>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break;p=e+-24|0;k[l>>2]=p;cC(p);e=k[l>>2]|0}AC(n,0,29494)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}d=i[g>>0]|0;p=d<<24>>24<0;fC((k[l>>2]|0)+-24|0,p?k[m>>2]|0:m,p?k[j>>2]|0:d&255)|0;tC(m);tC(n);d=f}p=d+1|0;e=GD(p,b,c)|0;if((e|0)==(p|0)){d=k[l>>2]|0;if((k[c>>2]|0)==(d|0))break;e=d+-24|0;while(1){if((d|0)==(e|0))break a;p=d+-24|0;k[l>>2]=p;cC(p);d=k[l>>2]|0}}d=k[l>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0>=2){PC(n,d+-24|0);d=k[l>>2]|0;a=d+-24|0;while(1){if((d|0)==(a|0))break;p=d+-24|0;k[l>>2]=p;cC(p);d=k[l>>2]|0}AC(n,0,29494)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}a=i[m+11>>0]|0;p=a<<24>>24<0;fC((k[l>>2]|0)+-24|0,p?k[m>>2]|0:m,p?k[m+4>>2]|0:a&255)|0;tC(m);tC(n);a=e}}}}while(0);u=o;return a|0}function pD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=u;u=u+32|0;h=l+12|0;j=l;if((((((b-a|0)>2?(i[a>>0]|0)==100:0)?(i[a+1>>0]|0)==115:0)?(m=a+2|0,d=aD(m,b,c)|0,(d|0)!=(m|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);b=k[g>>2]|0;a=b+-24|0;while(1){if((b|0)==(a|0))break;m=b+-24|0;k[g>>2]=m;cC(m);b=k[g>>2]|0}cD(j,29713,h);a=i[j+11>>0]|0;m=a<<24>>24<0;fC((k[g>>2]|0)+-24|0,m?k[j>>2]|0:j,m?k[j+4>>2]|0:a&255)|0;tC(j);tC(h);a=f}u=l;return a|0}function qD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=u;u=u+32|0;h=l+12|0;j=l;if((((((b-a|0)>2?(i[a>>0]|0)==100:0)?(i[a+1>>0]|0)==116:0)?(m=a+2|0,d=aD(m,b,c)|0,(d|0)!=(m|0)):0)?(f=oD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);b=k[g>>2]|0;a=b+-24|0;while(1){if((b|0)==(a|0))break;m=b+-24|0;k[g>>2]=m;cC(m);b=k[g>>2]|0}cD(j,29711,h);a=i[j+11>>0]|0;m=a<<24>>24<0;fC((k[g>>2]|0)+-24|0,m?k[j>>2]|0:j,m?k[j+4>>2]|0:a&255)|0;tC(j);tC(h);a=f}u=l;return a|0}function rD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;x=u;u=u+112|0;q=x+88|0;w=x+76|0;t=x+64|0;v=x+40|0;r=x+16|0;p=x;s=x+52|0;g=b;a:do if((g-a|0)>3){d=i[a>>0]|0;if(d<<24>>24==103){o=(i[a+1>>0]|0)==115;d=o?a+2|0:a;e=d;d=i[d>>0]|0}else{o=0;e=a}if(d<<24>>24==110){m=i[e+1>>0]|0;n=m<<24>>24==97;switch(m<<24>>24){case 97:case 119:break;default:{d=a;break a}}d=e+2|0;b:do if((d|0)!=(b|0)){m=0;while(1){if((i[d>>0]|0)==95)break;f=aD(d,b,c)|0;d=(f|0)==(d|0);e=(f|0)==(b|0);if(d|e)break b;else{m=m|(d|e)^1;d=f}}j=d+1|0;e=xC(j,b,c)|0;if(!((e|0)==(j|0)|(e|0)==(b|0))){d=i[e>>0]|0;c:do if(!((g-e|0)>2&d<<24>>24==112))if(d<<24>>24==69){h=0;j=e}else break b;else{if((i[e+1>>0]|0)!=105)break b;d=e+2|0;while(1){if((i[d>>0]|0)==69){h=1;j=d;break c}j=d;d=aD(d,b,c)|0;if((d|0)==(j|0)|(d|0)==(b|0))break b}}while(0);k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[w+(d<<2)>>2]=0;d=d+1|0}d:do if(h){f=c+4|0;d=k[f>>2]|0;if((k[c>>2]|0)==(d|0)){d=a;e=1}else{PC(t,d+-24|0);d=w+11|0;if((i[d>>0]|0)<0){l=k[w>>2]|0;i[q>>0]=0;Tr(l,q);k[w+4>>2]=0}else{i[q>>0]=0;Tr(w,q);i[d>>0]=0}bD(w);k[w>>2]=k[t>>2];k[w+4>>2]=k[t+4>>2];k[w+8>>2]=k[t+8>>2];d=0;while(1){if((d|0)==3)break;k[t+(d<<2)>>2]=0;d=d+1|0}tC(t);d=k[f>>2]|0;e=d+-24|0;while(1){if((d|0)==(e|0)){b=c;d=e;l=31;break d}l=d+-24|0;k[f>>2]=l;cC(l);d=k[f>>2]|0}}}else{d=c+4|0;f=d;b=c;d=k[d>>2]|0;l=31}while(0);if((l|0)==31)if((k[b>>2]|0)==(d|0)){d=a;e=1}else{PC(t,d+-24|0);e=k[f>>2]|0;g=e+-24|0;d=e;while(1){if((d|0)==(g|0))break;y=d+-24|0;k[f>>2]=y;cC(y);d=k[f>>2]|0}k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[v+(d<<2)>>2]=0;d=d+1|0}e:do if(m)if((k[b>>2]|0)==(g|0)){d=a;e=1}else{PC(r,e+-48|0);d=v+11|0;if((i[d>>0]|0)<0){y=k[v>>2]|0;i[q>>0]=0;Tr(y,q);k[v+4>>2]=0}else{i[q>>0]=0;Tr(v,q);i[d>>0]=0}bD(v);k[v>>2]=k[r>>2];k[v+4>>2]=k[r+4>>2];k[v+8>>2]=k[r+8>>2];d=0;while(1){if((d|0)==3)break;k[r+(d<<2)>>2]=0;d=d+1|0}tC(r);e=k[f>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0)){l=49;break e}y=e+-24|0;k[f>>2]=y;cC(y);e=k[f>>2]|0}}else l=49;while(0);if((l|0)==49){k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;d=0;while(1){if((d|0)==3)break;k[q+(d<<2)>>2]=0;d=d+1|0}if(o)ED(q,29494);if(n)BC(q,29704)|0;else BC(q,29454)|0;if(m){cD(p,29422,v);BC(p,29708)|0;k[r>>2]=k[p>>2];k[r+4>>2]=k[p+4>>2];k[r+8>>2]=k[p+8>>2];d=0;while(1){if((d|0)==3)break;k[p+(d<<2)>>2]=0;d=d+1|0}y=i[r+11>>0]|0;o=y<<24>>24<0;fC(q,o?k[r>>2]|0:r,o?k[r+4>>2]|0:y&255)|0;tC(r);tC(p)}y=i[t+11>>0]|0;o=y<<24>>24<0;fC(q,o?k[t>>2]|0:t,o?k[t+4>>2]|0:y&255)|0;if(h){cD(p,29417,w);BC(p,29420)|0;k[r>>2]=k[p>>2];k[r+4>>2]=k[p+4>>2];k[r+8>>2]=k[p+8>>2];d=0;while(1){if((d|0)==3)break;k[p+(d<<2)>>2]=0;d=d+1|0}y=i[r+11>>0]|0;o=y<<24>>24<0;fC(q,o?k[r>>2]|0:r,o?k[r+4>>2]|0:y&255)|0;tC(r);tC(p)};k[s>>2]=k[q>>2];k[s+4>>2]=k[q+4>>2];k[s+8>>2]=k[q+8>>2];d=0;while(1){if((d|0)==3)break;k[q+(d<<2)>>2]=0;d=d+1|0}SC(r,s);d=k[f>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,r);k[f>>2]=(k[f>>2]|0)+24}else VC(c,r);cC(r);tC(s);tC(q);d=j+1|0;e=0}tC(v);tC(t)}tC(w);if(!e)break a}}while(0);d=a}else d=a}else d=a;while(0);u=x;return d|0}function sD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+48|0;f=m+36|0;h=m+24|0;j=m+12|0;l=m;g=aD(a,b,c)|0;if((g|0)!=(a|0)?(e=c+4|0,d=k[e>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,29693)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}a=k[e>>2]|0;b=a+-24|0;d=b+11|0;if((i[d>>0]|0)<0){e=k[b>>2]|0;i[f>>0]=0;Tr(e,f);k[a+-20>>2]=0}else{i[f>>0]=0;Tr(b,f);i[d>>0]=0}bD(b);k[b>>2]=k[h>>2];k[b+4>>2]=k[h+4>>2];k[b+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}tC(h);tC(j);tC(l);a=g}u=m;return a|0}function tD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=u;u=u+16|0;h=j;if((((((b-a|0)>2?(i[a>>0]|0)==112:0)?(i[a+1>>0]|0)==116:0)?(l=a+2|0,d=aD(l,b,c)|0,(d|0)!=(l|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);a=k[g>>2]|0;b=a+-24|0;d=a;while(1){if((d|0)==(b|0))break;l=d+-24|0;k[g>>2]=l;cC(l);d=k[g>>2]|0}BC(a+-48|0,29690)|0;a=i[h+11>>0]|0;l=a<<24>>24<0;fC((k[g>>2]|0)+-24|0,l?k[h>>2]|0:h,l?k[h+4>>2]|0:a&255)|0;tC(h);a=f}u=j;return a|0}function uD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+112|0;h=q+88|0;j=q+64|0;l=q+48|0;m=q+36|0;n=q+24|0;o=q+12|0;p=q;if((((((b-a|0)>2?(i[a>>0]|0)==114:0)?(i[a+1>>0]|0)==99:0)?(r=a+2|0,d=xC(r,b,c)|0,(d|0)!=(r|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);a=k[g>>2]|0;b=a+-24|0;c=a;while(1){if((c|0)==(b|0))break;r=c+-24|0;k[g>>2]=r;cC(r);c=k[g>>2]|0}PC(p,a+-48|0);AC(p,0,29672)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}BC(o,29669)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[h+11>>0]|0;r=a<<24>>24<0;fC(n,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(j,l);TC((k[g>>2]|0)+-24|0,j);cC(j);tC(l);tC(m);tC(n);tC(o);tC(p);tC(h);a=f}u=q;return a|0}function vD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+112|0;h=q+88|0;j=q+64|0;l=q+48|0;m=q+36|0;n=q+24|0;o=q+12|0;p=q;if((((((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==99:0)?(r=a+2|0,d=xC(r,b,c)|0,(d|0)!=(r|0)):0)?(f=aD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,((e-(k[c>>2]|0)|0)/24|0)>>>0>=2):0){PC(h,e+-24|0);a=k[g>>2]|0;b=a+-24|0;c=a;while(1){if((c|0)==(b|0))break;r=c+-24|0;k[g>>2]=r;cC(r);c=k[g>>2]|0}PC(p,a+-48|0);AC(p,0,29656)|0;k[o>>2]=k[p>>2];k[o+4>>2]=k[p+4>>2];k[o+8>>2]=k[p+8>>2];a=0;while(1){if((a|0)==3)break;k[p+(a<<2)>>2]=0;a=a+1|0}BC(o,29669)|0;k[n>>2]=k[o>>2];k[n+4>>2]=k[o+4>>2];k[n+8>>2]=k[o+8>>2];a=0;while(1){if((a|0)==3)break;k[o+(a<<2)>>2]=0;a=a+1|0}a=i[h+11>>0]|0;r=a<<24>>24<0;fC(n,r?k[h>>2]|0:h,r?k[h+4>>2]|0:a&255)|0;k[m>>2]=k[n>>2];k[m+4>>2]=k[n+4>>2];k[m+8>>2]=k[n+8>>2];a=0;while(1){if((a|0)==3)break;k[n+(a<<2)>>2]=0;a=a+1|0}BC(m,29420)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(j,l);TC((k[g>>2]|0)+-24|0,j);cC(j);tC(l);tC(m);tC(n);tC(o);tC(p);tC(h);a=f}u=q;return a|0}function wD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==112:0){d=a+2|0;c=aD(d,b,c)|0;a=(c|0)==(d|0)?a:c}return a|0}function xD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=u;u=u+64|0;g=m+40|0;h=m+12|0;j=m+24|0;l=m;if(((((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==116:0)?(n=a+2|0,e=xC(n,b,c)|0,(e|0)!=(n|0)):0)?(f=c+4|0,d=k[f>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,29647)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(g,h);TC((k[f>>2]|0)+-24|0,g);cC(g);tC(h);tC(j);tC(l);a=e}u=m;return a|0}function yD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=u;u=u+64|0;g=m+40|0;h=m+12|0;j=m+24|0;l=m;if(((((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==122:0)?(n=a+2|0,e=aD(n,b,c)|0,(e|0)!=(n|0)):0)?(f=c+4|0,d=k[f>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(l,d+-24|0);AC(l,0,29647)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}BC(j,29420)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(g,h);TC((k[f>>2]|0)+-24|0,g);cC(g);tC(h);tC(j);tC(l);a=e}u=m;return a|0}function zD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+64|0;m=p+48|0;n=p+24|0;g=p;o=p+12|0;if(((((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==90:0)?(d=a+2|0,(i[d>>0]|0)==84):0)?(j=c+4|0,h=((k[j>>2]|0)-(k[c>>2]|0)|0)/24|0,l=NC(d,b,c)|0,f=((k[j>>2]|0)-(k[c>>2]|0)|0)/24|0,(l|0)!=(d|0)):0){k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$C(m,29633,Br(29633)|0);a:do if((h|0)!=(f|0)){PC(n,(k[c>>2]|0)+(h*24|0)|0);d=i[n+11>>0]|0;e=d<<24>>24<0;fC(m,e?k[n>>2]|0:n,e?k[n+4>>2]|0:d&255)|0;tC(n);d=n+11|0;e=n+4|0;a=h;while(1){a=a+1|0;if((a|0)==(f|0))break a;PC(g,(k[c>>2]|0)+(a*24|0)|0);AC(g,0,29644)|0;k[n>>2]=k[g>>2];k[n+4>>2]=k[g+4>>2];k[n+8>>2]=k[g+8>>2];b=0;while(1){if((b|0)==3)break;k[g+(b<<2)>>2]=0;b=b+1|0}b=i[d>>0]|0;q=b<<24>>24<0;fC(m,q?k[n>>2]|0:n,q?k[e>>2]|0:b&255)|0;tC(n);tC(g)}}while(0);BC(m,29420)|0;a=f;while(1){if((a|0)==(h|0))break;d=k[j>>2]|0;b=d+-24|0;while(1){if((d|0)==(b|0))break;q=d+-24|0;k[j>>2]=q;cC(q);d=k[j>>2]|0}a=a+-1|0}k[o>>2]=k[m>>2];k[o+4>>2]=k[m+4>>2];k[o+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}SC(n,o);a=k[j>>2]|0;if(a>>>0<(k[c+8>>2]|0)>>>0){UC(a,n);k[j>>2]=(k[j>>2]|0)+24}else VC(c,n);cC(n);tC(o);tC(m);a=l}u=p;return a|0}function AD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+64|0;h=n+40|0;j=n+12|0;l=n+24|0;m=n;if((((((b-a|0)>2?(i[a>>0]|0)==115:0)?(i[a+1>>0]|0)==90:0)?(d=a+2|0,(i[d>>0]|0)==102):0)?(f=fD(d,b,c)|0,(f|0)!=(d|0)):0)?(g=c+4|0,e=k[g>>2]|0,(k[c>>2]|0)!=(e|0)):0){PC(m,e+-24|0);AC(m,0,29633)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}BC(l,29420)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}SC(h,j);TC((k[g>>2]|0)+-24|0,h);cC(h);tC(j);tC(l);tC(m);a=f}u=n;return a|0}function BD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+64|0;h=n+40|0;j=n+12|0;l=n+24|0;m=n;a:do if((b-a|0)>2?(i[a>>0]|0)==116:0){d=i[a+1>>0]|0;switch(d<<24>>24){case 101:case 105:break;default:{b=a;break a}}e=a+2|0;if(d<<24>>24==101)b=aD(e,b,c)|0;else b=xC(e,b,c)|0;if((b|0)!=(e|0)?(g=c+4|0,f=k[g>>2]|0,(k[c>>2]|0)!=(f|0)):0){PC(m,f+-24|0);AC(m,0,29625)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}BC(l,29420)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}SC(h,j);TC((k[g>>2]|0)+-24|0,h);cC(h);tC(j);tC(l);tC(m)}else b=a}else b=a;while(0);u=n;return b|0}function CD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,5);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function DD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=u;u=u+48|0;g=l+24|0;h=l;j=l+12|0;if(((((b-a|0)>2?(i[a>>0]|0)==116:0)?(i[a+1>>0]|0)==119:0)?(m=a+2|0,e=aD(m,b,c)|0,(e|0)!=(m|0)):0)?(f=c+4|0,d=k[f>>2]|0,(k[c>>2]|0)!=(d|0)):0){PC(j,d+-24|0);AC(j,0,29618)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(g,h);TC((k[f>>2]|0)+-24|0,g);cC(g);tC(h);tC(j);a=e}u=l;return a|0}function ED(a,b){a=a|0;b=b|0;FD(a,b,Br(b)|0);return}function FD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;g=j;h=a+11|0;d=i[h>>0]|0;e=d<<24>>24<0;if(e)f=(k[a+8>>2]&2147483647)+-1|0;else f=10;do if(f>>>0>=c>>>0){if(e)d=k[a>>2]|0;else d=a;QA(d,b,c)|0;i[g>>0]=0;Tr(d+c|0,g);if((i[h>>0]|0)<0){k[a+4>>2]=c;break}else{i[h>>0]=c;break}}else{if(e)d=k[a+4>>2]|0;else d=d&255;pC(a,f,c-f|0,d,0,d,c,b)}while(0);u=j;return}function GD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;g=h;a:do if((b-a|0)>1){f=i[a>>0]|0;d=f<<24>>24==111;switch(f<<24>>24){case 100:case 111:{if((i[a+1>>0]|0)==110){e=a+2|0;if(!d){g=aE(e,b,c)|0;a=(g|0)==(e|0)?a:g;break a}d=ND(e,b,c)|0;if((d|0)==(e|0))break a;a=OC(d,b,c)|0;if((a|0)==(d|0)){a=d;break a}f=c+4|0;d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(g,d+-24|0);d=k[f>>2]|0;e=d+-24|0;b=d;while(1){if((b|0)==(e|0))break;c=b+-24|0;k[f>>2]=c;cC(c);b=k[f>>2]|0}c=i[g+11>>0]|0;f=c<<24>>24<0;fC(d+-48|0,f?k[g>>2]|0:g,f?k[g+4>>2]|0:c&255)|0;tC(g);break a}break}default:{}}d=JD(a,b,c)|0;if((d|0)==(a|0)){d=ND(a,b,c)|0;if((d|0)!=(a|0)){a=OC(d,b,c)|0;if((a|0)!=(d|0)){f=c+4|0;d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0>=2){PC(g,d+-24|0);d=k[f>>2]|0;e=d+-24|0;b=d;while(1){if((b|0)==(e|0))break;c=b+-24|0;k[f>>2]=c;cC(c);b=k[f>>2]|0}c=i[g+11>>0]|0;f=c<<24>>24<0;fC(d+-48|0,f?k[g>>2]|0:g,f?k[g+4>>2]|0:c&255)|0;tC(g)}}else a=d}}else a=d}while(0);u=h;return a|0}function HD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=u;u=u+32|0;j=m+8|0;h=m;a:do if((a|0)!=(b|0)){l=c+16|0;switch(i[a>>0]|0){case 84:{g=c+4|0;f=((k[g>>2]|0)-(k[c>>2]|0)|0)/24|0;b=NC(a,b,c)|0;d=k[g>>2]|0;e=(d-(k[c>>2]|0)|0)/24|0;if((b|0)!=(a|0)&(e|0)==(f+1|0)){k[h>>2]=k[c+12>>2];GC(j,d+-24|0,h);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;c=d+4|0;k[c>>2]=0;l=k[j+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=l;k[d>>2]=k[j>>2];l=j+4|0;k[c>>2]=k[l>>2];c=j+8|0;k[d+8>>2]=k[c>>2];k[c>>2]=0;k[l>>2]=0;k[j>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(l,j);dC(j);a=b;break a}while(1){if((e|0)==(f|0))break a;b=d+-24|0;while(1){if((d|0)==(b|0))break;l=d+-24|0;k[g>>2]=l;cC(l);d=k[g>>2]|0}e=e+-1|0;d=b}}case 68:{b=YC(a,b,c)|0;if((b|0)==(a|0))break a;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;k[h>>2]=k[c+12>>2];GC(j,d+-24|0,h);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;c=d+4|0;k[c>>2]=0;l=k[j+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=l;k[d>>2]=k[j>>2];l=j+4|0;k[c>>2]=k[l>>2];c=j+8|0;k[d+8>>2]=k[c>>2];k[c>>2]=0;k[l>>2]=0;k[j>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(l,j);dC(j);a=b;break a}case 83:{d=XC(a,b,c)|0;if((d|0)!=(a|0)){a=d;break a}if((b-a|0)<=2)break a;if((i[a+1>>0]|0)!=116)break a;g=a+2|0;e=KD(g,b,c)|0;if((e|0)==(g|0))break a;d=c+4|0;b=k[d>>2]|0;if((k[c>>2]|0)==(b|0))break a;AC(b+-24|0,0,29716)|0;a=(k[d>>2]|0)+-24|0;k[h>>2]=k[c+12>>2];GC(j,a,h);a=c+20|0;d=k[a>>2]|0;if(d>>>0<(k[c+24>>2]|0)>>>0){k[d>>2]=0;c=d+4|0;k[c>>2]=0;l=k[j+12>>2]|0;k[d+8>>2]=0;k[d+12>>2]=l;k[d>>2]=k[j>>2];l=j+4|0;k[c>>2]=k[l>>2];c=j+8|0;k[d+8>>2]=k[c>>2];k[c>>2]=0;k[l>>2]=0;k[j>>2]=0;k[a>>2]=(k[a>>2]|0)+16}else HC(l,j);dC(j);a=e;break a}default:break a}}while(0);u=m;return a|0}function ID(a,b,c){a=a|0;b=b|0;c=c|0;return JD(a,b,c)|0}function JD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;g=h;if((a|0)!=(b|0)?(d=QC(a,b,c)|0,(d|0)!=(a|0)):0){f=OC(d,b,c)|0;if((f|0)!=(d|0)){e=c+4|0;b=k[e>>2]|0;if(((b-(k[c>>2]|0)|0)/24|0)>>>0>=2){PC(g,b+-24|0);a=k[e>>2]|0;b=a+-24|0;d=a;while(1){if((d|0)==(b|0))break;c=d+-24|0;k[e>>2]=c;cC(c);d=k[e>>2]|0}e=i[g+11>>0]|0;c=e<<24>>24<0;fC(a+-48|0,c?k[g>>2]|0:g,c?k[g+4>>2]|0:e&255)|0;tC(g);a=f}}else a=d}u=h;return a|0}function KD(a,b,c){a=a|0;b=b|0;c=c|0;a:do if((a|0)!=(b|0))switch(i[a>>0]|0){case 68:case 67:{a=LD(a,b,c)|0;break a}case 85:{a=MD(a,b,c)|0;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{a=QC(a,b,c)|0;break a}default:return ND(a,b,c)|0}while(0);return a|0}function LD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+64|0;m=n+40|0;e=n+24|0;h=n;j=n+12|0;a:do if((b-a|0)>1?(l=c+4|0,d=k[l>>2]|0,(k[c>>2]|0)!=(d|0)):0){f=a+2|0;g=c+60|0;b=a+1|0;switch(i[a>>0]|0){case 67:{switch(i[b>>0]|0){case 53:case 51:case 50:case 49:break;default:break a}ZD(e,d+-24|0);SC(m,e);a=k[l>>2]|0;if(a>>>0<(k[c+8>>2]|0)>>>0){UC(a,m);k[l>>2]=(k[l>>2]|0)+24}else VC(c,m);cC(m);tC(e);i[g>>0]=1;a=f;break a}case 68:break;default:break a}switch(i[b>>0]|0){case 53:case 50:case 49:case 48:break;default:break a}ZD(j,d+-24|0);AC(j,0,29492)|0;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}SC(m,h);a=k[l>>2]|0;if(a>>>0<(k[c+8>>2]|0)>>>0){UC(a,m);k[l>>2]=(k[l>>2]|0)+24}else VC(c,m);cC(m);tC(h);tC(j);i[g>>0]=1;a=f}while(0);u=n;return a|0}function MD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=u;u=u+80|0;o=q+56|0;e=q+40|0;f=q+28|0;m=q+12|0;l=q;n=q+24|0;a:do if((b-a|0)>2?(i[a>>0]|0)==85:0){g=a+2|0;switch(i[a+1>>0]|0){case 116:{k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;$C(e,30223,Br(30223)|0);SC(o,e);f=c+4|0;d=k[f>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,o);k[f>>2]=(k[f>>2]|0)+24}else VC(c,o);cC(o);tC(e);if((g|0)==(b|0)){e=k[f>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;p=e+-24|0;k[f>>2]=p;cC(p);e=k[f>>2]|0}}if(((i[g>>0]|0)+-48|0)>>>0<10){d=a+3|0;while(1){if((d|0)==(b|0)){d=b;break}if(((i[d>>0]|0)+-48|0)>>>0>=10)break;d=d+1|0}VD((k[f>>2]|0)+-24|0,g,d)}else d=g;WD((k[f>>2]|0)+-24|0,39);if((d|0)!=(b|0)?(i[d>>0]|0)==95:0){a=d+1|0;break a}e=k[f>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;p=e+-24|0;k[f>>2]=p;cC(p);e=k[f>>2]|0}}case 108:break;default:break a}k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;$C(f,30232,Br(30232)|0);SC(o,f);p=c+4|0;d=k[p>>2]|0;if(d>>>0<(k[c+8>>2]|0)>>>0){UC(d,o);k[p>>2]=(k[p>>2]|0)+24}else VC(c,o);cC(o);tC(f);do if((i[g>>0]|0)!=118){d=xC(g,b,c)|0;if((d|0)==(g|0)){e=k[p>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;b=e+-24|0;k[p>>2]=b;cC(b);e=k[p>>2]|0}}e=k[p>>2]|0;if(((e-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(m,e+-24|0);g=k[p>>2]|0;e=g+-24|0;f=g;while(1){if((f|0)==(e|0))break;j=f+-24|0;k[p>>2]=j;cC(j);f=k[p>>2]|0}h=m+11|0;f=i[h>>0]|0;e=f<<24>>24<0;j=m+4|0;fC(g+-48|0,e?k[m>>2]|0:m,e?k[j>>2]|0:f&255)|0;while(1){g=xC(d,b,c)|0;if((g|0)==(d|0)){e=50;break}d=k[p>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2){e=75;break}PC(l,d+-24|0);if((i[h>>0]|0)<0){f=k[m>>2]|0;i[o>>0]=0;Tr(f,o);k[j>>2]=0}else{i[o>>0]=0;Tr(m,o);i[h>>0]=0}bD(m);k[m>>2]=k[l>>2];k[m+4>>2]=k[l+4>>2];k[m+8>>2]=k[l+8>>2];d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}tC(l);d=k[p>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;r=f+-24|0;k[p>>2]=r;cC(r);f=k[p>>2]|0}r=i[h>>0]|0;if(!((r<<24>>24<0?k[j>>2]|0:r&255)|0)){d=g;continue}BC(d+-48|0,29644)|0;d=i[h>>0]|0;r=d<<24>>24<0;fC((k[p>>2]|0)+-24|0,r?k[m>>2]|0:m,r?k[j>>2]|0:d&255)|0;d=g}if((e|0)==50){BC((k[p>>2]|0)+-24|0,29420)|0;tC(m);break}else if((e|0)==75){tC(m);break a}}else{WD((k[p>>2]|0)+-24|0,41);d=a+3|0}while(0);if((d|0)!=(b|0)?(i[d>>0]|0)==69:0){g=d+1|0;if((g|0)==(b|0)){e=k[p>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;r=e+-24|0;k[p>>2]=r;cC(r);e=k[p>>2]|0}}if(((i[g>>0]|0)+-48|0)>>>0<10){d=d+2|0;while(1){if((d|0)==(b|0)){d=b;break}if(((i[d>>0]|0)+-48|0)>>>0>=10)break;d=d+1|0}e=(k[p>>2]|0)+-24|0;if((i[e+11>>0]|0)<0)f=k[e>>2]|0;else f=e;k[n>>2]=f+7;k[o>>2]=k[n>>2];XD(e,o,g,d)}else d=g;if((d|0)!=(b|0)?(i[d>>0]|0)==95:0){a=d+1|0;break}e=k[p>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;r=e+-24|0;k[p>>2]=r;cC(r);e=k[p>>2]|0}}e=k[p>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;r=e+-24|0;k[p>>2]=r;cC(r);e=k[p>>2]|0}}while(0);u=q;return a|0}function ND(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=u;u=u+32|0;e=g;a:do if((b-a|0)>1){f=a+2|0;d=a+1|0;do switch(i[a>>0]|0){case 97:switch(i[d>>0]|0){case 97:{OD(e,29722);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 110:case 100:{PD(e,29733);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 78:{OD(e,29743);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 83:{PD(e,29754);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 99:switch(i[d>>0]|0){case 108:{OD(e,29764);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 109:{PD(e,29775);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 111:{PD(e,29785);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 118:{e=c+63|0;h=i[e>>0]|0;i[e>>0]=0;d=xC(f,b,c)|0;i[e>>0]=h;if((d|0)==(f|0))break a;b=k[c+4>>2]|0;if((k[c>>2]|0)==(b|0))break a;AC(b+-24|0,0,29795)|0;i[c+60>>0]=1;a=d;break a}default:break a}case 100:switch(i[d>>0]|0){case 97:{QD(e,29805);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 101:{PD(e,29823);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 108:{RD(e);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 118:{PD(e,29833);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 86:{OD(e,29843);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 101:switch(i[d>>0]|0){case 111:{PD(e,29854);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 79:{OD(e,29864);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 113:{OD(e,29875);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 103:switch(i[d>>0]|0){case 101:{OD(e,29886);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 116:{PD(e,29897);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 105:{if((i[d>>0]|0)!=120)break a;OD(e,29907);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 108:switch(i[d>>0]|0){case 101:{OD(e,29918);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 105:{d=QC(f,b,c)|0;if((d|0)==(f|0))break a;b=k[c+4>>2]|0;if((k[c>>2]|0)==(b|0))break a;AC(b+-24|0,0,29929)|0;a=d;break a}case 115:{OD(e,29941);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 83:{SD(e,29952);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 116:{PD(e,29964);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 109:switch(i[d>>0]|0){case 105:{PD(e,29974);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 73:{OD(e,29984);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 108:{PD(e,29823);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 76:{OD(e,29995);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 109:{OD(e,30006);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 110:switch(i[d>>0]|0){case 97:{TD(e,30017);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 101:{OD(e,30032);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 103:{PD(e,29974);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 116:{PD(e,30043);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 119:{UD(e,30053);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 111:switch(i[d>>0]|0){case 111:{OD(e,30066);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 114:{PD(e,30077);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 82:{OD(e,30087);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 112:switch(i[d>>0]|0){case 109:{SD(e,30098);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 108:{PD(e,30110);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 76:{OD(e,30120);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 112:{OD(e,30131);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 115:{PD(e,30110);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 116:{OD(e,30142);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 113:{if((i[d>>0]|0)!=117)break a;PD(e,30153);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 114:switch(i[d>>0]|0){case 109:{PD(e,30163);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 77:{OD(e,30173);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 115:{OD(e,30184);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}case 83:{SD(e,30195);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,e);k[a>>2]=(k[a>>2]|0)+24}else VC(c,e);cC(e);a=f;break a}default:break a}case 118:{if(((i[d>>0]|0)+-48|0)>>>0>=10)break a;d=QC(f,b,c)|0;if((d|0)==(f|0))break a;b=k[c+4>>2]|0;if((k[c>>2]|0)==(b|0))break a;AC(b+-24|0,0,29795)|0;a=d;break a}default:break a}while(0)}while(0);u=g;return a|0}function OD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,10);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function PD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,9);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function QD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,17);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function RD(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30207,15);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function SD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,11);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return} -function TD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,14);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function UD(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,12);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function VD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=u;u=u+16|0;g=b;l=n;m=a+11|0;d=i[m>>0]|0;if(d<<24>>24<0){f=(k[a+8>>2]&2147483647)+-1|0;h=k[a+4>>2]|0}else{f=10;h=d&255}e=c-g|0;do if(e|0){j=h+e|0;if((f-h|0)>>>0>>0){YD(a,f,j-f|0,h,h,0);d=i[m>>0]|0}if(d<<24>>24<0)f=k[a>>2]|0;else f=a;e=c+(h-g)|0;d=f+h|0;while(1){if((b|0)==(c|0))break;Tr(d,b);d=d+1|0;b=b+1|0}i[l>>0]=0;Tr(f+e|0,l);if((i[m>>0]|0)<0){k[a+4>>2]=j;break}else{i[m>>0]=j;break}}while(0);u=n;return}function WD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;f=h;g=h+1|0;i[f>>0]=b;d=a+11|0;b=i[d>>0]|0;c=b<<24>>24<0;if(c){e=k[a+4>>2]|0;b=(k[a+8>>2]&2147483647)+-1|0}else{e=b&255;b=10}if((e|0)==(b|0)){YD(a,b,1,b,b,0);b=b+1|0;if((i[d>>0]|0)<0)c=8;else c=7}else{b=e+1|0;if(c)c=8;else c=7}if((c|0)==7){i[d>>0]=b;b=a}else if((c|0)==8){d=k[a>>2]|0;k[a+4>>2]=b;b=d}a=b+e|0;Tr(a,f);i[g>>0]=0;Tr(a+1|0,g);u=h;return}function XD(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,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p;o=a+11|0;e=i[o>>0]|0;j=e<<24>>24<0;if(j){g=(k[a+8>>2]&2147483647)+-1|0;h=k[a+4>>2]|0;m=(k[b>>2]|0)-(k[a>>2]|0)|0}else{g=10;h=e&255;m=(k[b>>2]|0)-a|0}f=d-c|0;a:do if(f|0){l=h+f|0;if((g-h|0)>>>0>=f>>>0){if(j)e=k[a>>2]|0;else e=a;b=h-m|0;if(b){j=e+m|0;QA(j+f|0,j,b)|0}}else{YD(a,g,l-g|0,h,m,f);e=k[a>>2]|0}if((i[o>>0]|0)<0)k[a+4>>2]=l;else i[o>>0]=l;i[n>>0]=0;Tr(e+l|0,n);e=e+m|0;while(1){if((c|0)==(d|0))break a;Tr(e,c);c=c+1|0;e=e+1|0}}while(0);u=p;return}function YD(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 g=0,h=0,j=0;if((-17-b|0)>>>0>>0)HA(a);if((i[a+11>>0]|0)<0)j=k[a>>2]|0;else j=a;if(b>>>0<2147483623){g=c+b|0;h=b<<1;g=g>>>0>>0?h:g;g=g>>>0<11?11:g+16&-16}else g=-17;h=qC(g)|0;if(e|0)rr(h,j,e)|0;c=d-e|0;if(c|0)rr(h+e+f|0,j+e|0,c)|0;if((b|0)!=10)rC(j);k[a>>2]=h;k[a+8>>2]=g|-2147483648;return}function ZD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=b+11|0;e=i[f>>0]|0;g=b+4|0;a:do if(!((e<<24>>24<0?k[g>>2]|0:e&255)|0))_D(a,b);else{c=Br(30242)|0;e=i[f>>0]|0;if((c|0)==((e<<24>>24<0?k[g>>2]|0:e&255)|0)?(LC(b,30242,c)|0)==0:0){ED(b,30254);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30325,Br(30325)|0);break}c=Br(30338)|0;e=i[f>>0]|0;if((c|0)==((e<<24>>24<0?k[g>>2]|0:e&255)|0)?(LC(b,30338,c)|0)==0:0){ED(b,30351);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30401,Br(30401)|0);break}c=Br(30415)|0;e=i[f>>0]|0;if((c|0)==((e<<24>>24<0?k[g>>2]|0:e&255)|0)?(LC(b,30415,c)|0)==0:0){ED(b,30428);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30478,Br(30478)|0);break}d=Br(30492)|0;e=i[f>>0]|0;c=k[g>>2]|0;do if((d|0)==((e<<24>>24<0?c:e&255)|0))if(!(LC(b,30492,d)|0)){ED(b,30506);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30557,Br(30557)|0);break a}else{e=i[f>>0]|0;c=k[g>>2]|0;break}while(0);g=e<<24>>24<0;b=g?k[b>>2]|0:b;c=b+(g?c:e&255)|0;b:do if((i[c+-1>>0]|0)==62){g=1;c:while(1){d:while(1){f=c+-1|0;if((f|0)==(b|0))break c;e=c+-2|0;switch(i[e>>0]|0){case 60:{d=23;break d}case 62:{d=24;break d}default:c=f}}if((d|0)==23){c=g+-1|0;if(!c)break b;else{g=c;c=f;continue}}else if((d|0)==24){g=g+1|0;c=f;continue}}k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;c=0;while(1){if((c|0)==3)break a;k[a+(c<<2)>>2]=0;c=c+1|0}}else e=c;while(0);c=e;while(1){d=c+-1|0;if((d|0)==(b|0)){c=b;break}if((i[d>>0]|0)==58)break;else c=d}k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$D(a,c,e)}while(0);return}function _D(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;if((i[b+11>>0]|0)<0)$C(a,k[b>>2]|0,k[b+4>>2]|0);else{k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2]}return}function $D(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=u;u=u+16|0;e=b;h=j;d=c-e|0;if(d>>>0<=4294967279)if(d>>>0<11){i[a+11>>0]=d;g=a}else f=5;else{HA(a);f=5}if((f|0)==5){f=d+16&-16;g=qC(f)|0;k[a>>2]=g;k[a+8>>2]=f|-2147483648;k[a+4>>2]=d}d=c-e|0;a=g;while(1){if((b|0)==(c|0))break;Tr(a,b);b=b+1|0;a=a+1|0}i[h>>0]=0;Tr(g+d|0,h);u=j;return}function aE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((a|0)!=(b|0)){d=HD(a,b,c)|0;if((d|0)==(a|0))d=JD(a,b,c)|0;if((d|0)!=(a|0)?(e=k[c+4>>2]|0,(k[c>>2]|0)!=(e|0)):0)AC(e+-24|0,0,29492)|0;else d=a}else d=a;return d|0}function bE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function cE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=u;u=u+32|0;b=f;c=a+4|0;d=(((k[c>>2]|0)-(k[a>>2]|0)|0)/24|0)+1|0;e=dE(a)|0;if(e>>>0>>0)Sy(a);g=k[a>>2]|0;i=((k[a+8>>2]|0)-g|0)/24|0;h=i<<1;eE(b,i>>>0>>1>>>0?(h>>>0>>0?d:h):e,((k[c>>2]|0)-g|0)/24|0,a+12|0);e=b+8|0;d=k[e>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;bE(d);k[e>>2]=d+24;fE(a,b);gE(b);u=f;return}function dE(a){a=a|0;return 178956970}function eE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a+12>>2]=0;k[a+16>>2]=d;if(!b)d=0;else d=hE(d,b)|0;k[a>>2]=d;c=d+(c*24|0)|0;k[a+8>>2]=c;k[a+4>>2]=c;k[a+12>>2]=d+(b*24|0);return}function fE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=k[a>>2]|0;e=a+4|0;f=b+4|0;c=k[e>>2]|0;while(1){if((c|0)==(d|0))break;g=c+-24|0;UC((k[f>>2]|0)+-24|0,g);k[f>>2]=(k[f>>2]|0)+-24;c=g}d=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=d;d=b+8|0;g=k[e>>2]|0;k[e>>2]=k[d>>2];k[d>>2]=g;d=a+8|0;g=b+12|0;e=k[d>>2]|0;k[d>>2]=k[g>>2];k[g>>2]=e;k[b>>2]=k[f>>2];return}function gE(a){a=a|0;var b=0,c=0,d=0;b=k[a+4>>2]|0;c=a+8|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-24|0;k[c>>2]=d;cC(d)}b=k[a>>2]|0;if(b|0)sC(k[a+16>>2]|0,b,((k[a+12>>2]|0)-b|0)/24|0);return}function hE(a,b){a=a|0;b=b|0;return iE(k[a>>2]|0,b*24|0)|0}function iE(a,b){a=a|0;b=b|0;var c=0,d=0;c=nC(b)|0;d=a+4096|0;b=k[d>>2]|0;if((a+4096-b|0)>>>0>>0)b=Oq(c)|0;else k[d>>2]=b+c;return b|0}function jE(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,j=0,l=0,m=0,n=0;n=u;u=u+48|0;f=n+24|0;g=n;h=n+12|0;m=_C(a,b)|0;if(!((m|0)==(a|0)|(m|0)==(b|0))?(i[m>>0]|0)==69:0){j=c+11|0;e=i[j>>0]|0;l=c+4|0;do if((e<<24>>24<0?k[l>>2]|0:e&255)>>>0<=3){b=d+4|0;e=k[b>>2]|0;if(e>>>0<(k[d+8>>2]|0)>>>0){k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;bE(e);k[b>>2]=(k[b>>2]|0)+24;break}else{cE(d);break}}else{cD(h,29422,c);BC(h,29420)|0;k[g>>2]=k[h>>2];k[g+4>>2]=k[h+4>>2];k[g+8>>2]=k[h+8>>2];b=0;while(1){if((b|0)==3)break;k[h+(b<<2)>>2]=0;b=b+1|0}SC(f,g);b=d+4|0;e=k[b>>2]|0;if(e>>>0<(k[d+8>>2]|0)>>>0){UC(e,f);k[b>>2]=(k[b>>2]|0)+24}else VC(d,f);cC(f);tC(g);tC(h)}while(0);e=d+4|0;if((i[a>>0]|0)==110){WD((k[e>>2]|0)+-24|0,45);a=a+1|0}VD((k[e>>2]|0)+-24|0,a,m);a=i[j>>0]|0;b=a<<24>>24<0;a=b?k[l>>2]|0:a&255;if(a>>>0<4)fC((k[e>>2]|0)+-24|0,b?k[c>>2]|0:c,a)|0;a=m+1|0}u=n;return a|0}function kE(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,4);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function lE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,q=0;q=u;u=u+64|0;n=q;h=q+36|0;j=q+40|0;m=q+24|0;a:do if((b-a|0)>>>0>8){d=0;b=h;while(1){e=i[a+d>>0]|0;f=e<<24>>24;l=a+(d|1)|0;if((d|0)==8){g=6;break}if(!(Dp(f)|0))break;l=i[l>>0]|0;i[b>>0]=l+(((f+-48|0)>>>0<10?0:9)+f<<4)+((l+-48|0)>>>0<10?208:169);d=d+2|0;b=b+1|0}do if((g|0)==6){if(e<<24>>24==69){b:do if((h|0)!=(b|0)){d=h;while(1){b=b+-1|0;if(d>>>0>=b>>>0)break b;g=i[d>>0]|0;i[d>>0]=i[b>>0]|0;i[b>>0]=g;d=d+1|0}}while(0);b=j;d=b+24|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(d|0));p[n>>3]=+o[h>>2];b=bq(j,24,30734,n)|0;if(b>>>0>23)break;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$C(m,j,b);SC(n,m);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,n);k[a>>2]=(k[a>>2]|0)+24}else VC(c,n);cC(n);tC(m);a=l}break a}while(0)}while(0);u=q;return a|0}function mE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+80|0;n=o+8|0;h=o;j=o+48|0;m=o+32|0;a:do if((b-a|0)>>>0>16){d=0;b=h;while(1){e=i[a+d>>0]|0;f=e<<24>>24;l=a+(d|1)|0;if((d|0)==16){g=6;break}if(!(Dp(f)|0))break;l=i[l>>0]|0;i[b>>0]=l+(((f+-48|0)>>>0<10?0:9)+f<<4)+((l+-48|0)>>>0<10?208:169);d=d+2|0;b=b+1|0}do if((g|0)==6){if(e<<24>>24==69){b:do if((h|0)!=(b|0)){d=h;while(1){b=b+-1|0;if(d>>>0>=b>>>0)break b;g=i[d>>0]|0;i[d>>0]=i[b>>0]|0;i[b>>0]=g;d=d+1|0}}while(0);b=j;d=b+32|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(d|0));p[n>>3]=+p[h>>3];b=bq(j,32,30731,n)|0;if(b>>>0>31)break;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$C(m,j,b);SC(n,m);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,n);k[a>>2]=(k[a>>2]|0)+24}else VC(c,n);cC(n);tC(m);a=l}break a}while(0)}while(0);u=o;return a|0}function nE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=u;u=u+96|0;n=o+8|0;h=o;j=o+48|0;m=o+32|0;a:do if((b-a|0)>>>0>20){d=0;b=h;while(1){e=i[a+d>>0]|0;f=e<<24>>24;l=a+(d|1)|0;if((d|0)==20){g=6;break}if(!(Dp(f)|0))break;l=i[l>>0]|0;i[b>>0]=l+(((f+-48|0)>>>0<10?0:9)+f<<4)+((l+-48|0)>>>0<10?208:169);d=d+2|0;b=b+1|0}do if((g|0)==6){if(e<<24>>24==69){b:do if((h|0)!=(b|0)){d=h;while(1){b=b+-1|0;if(d>>>0>=b>>>0)break b;g=i[d>>0]|0;i[d>>0]=i[b>>0]|0;i[b>>0]=g;d=d+1|0}}while(0);b=j;d=b+40|0;do{i[b>>0]=0;b=b+1|0}while((b|0)<(d|0));p[n>>3]=+p[h>>3];b=bq(j,40,30726,n)|0;if(b>>>0>39)break;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;$C(m,j,b);SC(n,m);a=c+4|0;b=k[a>>2]|0;if(b>>>0<(k[c+8>>2]|0)>>>0){UC(b,n);k[a>>2]=(k[a>>2]|0)+24}else VC(c,n);cC(n);tC(m);a=l}break a}while(0)}while(0);u=o;return a|0}function oE(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,13);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function pE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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;V=u;u=u+48|0;P=V+36|0;Q=V+24|0;R=V+8|0;S=V;a:do if((a|0)!=(b|0)?(i[a>>0]|0)==78:0){d=yC(a+1|0,b,P)|0;b:do if((d|0)!=(b|0)){e=c+52|0;k[e>>2]=0;f=d+1|0;switch(i[d>>0]|0){case 82:{d=1;T=6;break}case 79:{d=2;T=6;break}default:{}}if((T|0)==6){k[e>>2]=d;d=f}O=c+4|0;e=k[O>>2]|0;if(e>>>0<(k[c+8>>2]|0)>>>0){k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;bE(e);k[O>>2]=(k[O>>2]|0)+24}else cE(c);if(((b-d|0)>1?(i[d>>0]|0)==83:0)?(i[d+1>>0]|0)==116:0){ED((k[O>>2]|0)+-24|0,30798);d=d+2|0}if((d|0)==(b|0)){e=k[O>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break b;U=e+-24|0;k[O>>2]=U;cC(U);e=k[O>>2]|0}}l=c+16|0;m=Q+11|0;n=Q+4|0;j=c+12|0;N=c+20|0;o=c+24|0;p=R+12|0;q=R+4|0;r=R+8|0;s=R+12|0;t=R+4|0;v=R+8|0;w=R+11|0;x=R+4|0;y=R+11|0;z=R+4|0;A=R+12|0;B=R+4|0;C=R+8|0;D=R+12|0;E=R+4|0;F=R+8|0;G=R+11|0;H=R+4|0;I=R+12|0;J=R+4|0;K=R+8|0;L=R+11|0;M=R+4|0;h=0;c:while(1){d:while(1){e=i[d>>0]|0;f=d+1|0;if(e<<24>>24==69)break c;switch(e<<24>>24|0){case 83:{T=21;break d}case 84:{T=37;break d}case 68:{T=51;break d}case 73:break;case 76:if((f|0)==(b|0))break b;else{d=f;continue d}default:break d}g=OC(d,b,c)|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;PC(Q,(k[O>>2]|0)+-24|0);d=k[O>>2]|0;e=d+-24|0;f=d;while(1){if((f|0)==(e|0))break;W=f+-24|0;k[O>>2]=W;cC(W);f=k[O>>2]|0}W=i[m>>0]|0;f=W<<24>>24<0;fC(d+-48|0,f?k[Q>>2]|0:Q,f?k[n>>2]|0:W&255)|0;d=(k[O>>2]|0)+-24|0;k[S>>2]=k[j>>2];GC(R,d,S);d=k[N>>2]|0;if(d>>>0<(k[o>>2]|0)>>>0){k[d>>2]=0;W=d+4|0;k[W>>2]=0;f=k[p>>2]|0;k[d+8>>2]=0;k[d+12>>2]=f;k[d>>2]=k[R>>2];k[W>>2]=k[q>>2];k[d+8>>2]=k[r>>2];k[r>>2]=0;k[q>>2]=0;k[R>>2]=0;k[N>>2]=(k[N>>2]|0)+16}else HC(l,R);dC(R);tC(Q);d=g}e:do if((T|0)==21){T=0;if((f|0)!=(b|0)?(i[f>>0]|0)==116:0)break;g=XC(d,b,c)|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;PC(Q,(k[O>>2]|0)+-24|0);f=k[O>>2]|0;d=f+-24|0;e=f;while(1){if((e|0)==(d|0))break;W=e+-24|0;k[O>>2]=W;cC(W);e=k[O>>2]|0}e=f+-48|0;d=i[e+11>>0]|0;if(d<<24>>24<0)d=k[f+-44>>2]|0;else d=d&255;if(!d)tE(e,Q);else{cD(R,29494,Q);d=i[y>>0]|0;W=d<<24>>24<0;fC((k[O>>2]|0)+-24|0,W?k[R>>2]|0:R,W?k[z>>2]|0:d&255)|0;tC(R);d=(k[O>>2]|0)+-24|0;k[S>>2]=k[j>>2];GC(R,d,S);d=k[N>>2]|0;if(d>>>0<(k[o>>2]|0)>>>0){k[d>>2]=0;W=d+4|0;k[W>>2]=0;h=k[A>>2]|0;k[d+8>>2]=0;k[d+12>>2]=h;k[d>>2]=k[R>>2];k[W>>2]=k[B>>2];k[d+8>>2]=k[C>>2];k[C>>2]=0;k[B>>2]=0;k[R>>2]=0;k[N>>2]=(k[N>>2]|0)+16}else HC(l,R);dC(R)}tC(Q);h=1;d=g;continue c}else if((T|0)==37){T=0;g=NC(d,b,c)|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;PC(Q,(k[O>>2]|0)+-24|0);f=k[O>>2]|0;d=f+-24|0;e=f;while(1){if((e|0)==(d|0))break;W=e+-24|0;k[O>>2]=W;cC(W);e=k[O>>2]|0}e=f+-48|0;d=i[e+11>>0]|0;if(d<<24>>24<0)d=k[f+-44>>2]|0;else d=d&255;if(!d)tE(e,Q);else{cD(R,29494,Q);W=i[G>>0]|0;h=W<<24>>24<0;fC((k[O>>2]|0)+-24|0,h?k[R>>2]|0:R,h?k[H>>2]|0:W&255)|0;tC(R)}d=(k[O>>2]|0)+-24|0;k[S>>2]=k[j>>2];GC(R,d,S);d=k[N>>2]|0;if(d>>>0<(k[o>>2]|0)>>>0){k[d>>2]=0;W=d+4|0;k[W>>2]=0;h=k[D>>2]|0;k[d+8>>2]=0;k[d+12>>2]=h;k[d>>2]=k[R>>2];k[W>>2]=k[E>>2];k[d+8>>2]=k[F>>2];k[F>>2]=0;k[E>>2]=0;k[R>>2]=0;k[N>>2]=(k[N>>2]|0)+16}else HC(l,R);dC(R);tC(Q);h=1;d=g;continue c}else if((T|0)==51){T=0;if((f|0)!=(b|0))switch(i[f>>0]|0){case 84:case 116:break;default:break e}g=YC(d,b,c)|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;PC(Q,(k[O>>2]|0)+-24|0);f=k[O>>2]|0;d=f+-24|0;e=f;while(1){if((e|0)==(d|0))break;W=e+-24|0;k[O>>2]=W;cC(W);e=k[O>>2]|0}e=f+-48|0;d=i[e+11>>0]|0;if(d<<24>>24<0)d=k[f+-44>>2]|0;else d=d&255;if(!d)tE(e,Q);else{cD(R,29494,Q);W=i[L>>0]|0;h=W<<24>>24<0;fC((k[O>>2]|0)+-24|0,h?k[R>>2]|0:R,h?k[M>>2]|0:W&255)|0;tC(R)}d=(k[O>>2]|0)+-24|0;k[S>>2]=k[j>>2];GC(R,d,S);d=k[N>>2]|0;if(d>>>0<(k[o>>2]|0)>>>0){k[d>>2]=0;W=d+4|0;k[W>>2]=0;h=k[I>>2]|0;k[d+8>>2]=0;k[d+12>>2]=h;k[d>>2]=k[R>>2];k[W>>2]=k[J>>2];k[d+8>>2]=k[K>>2];k[K>>2]=0;k[J>>2]=0;k[R>>2]=0;k[N>>2]=(k[N>>2]|0)+16}else HC(l,R);dC(R);tC(Q);h=1;d=g;continue c}while(0);g=KD(d,b,c)|0;if((g|0)==(d|0)|(g|0)==(b|0))break b;PC(Q,(k[O>>2]|0)+-24|0);f=k[O>>2]|0;d=f+-24|0;e=f;while(1){if((e|0)==(d|0))break;W=e+-24|0;k[O>>2]=W;cC(W);e=k[O>>2]|0}e=f+-48|0;d=i[e+11>>0]|0;if(d<<24>>24<0)d=k[f+-44>>2]|0;else d=d&255;if(!d)tE(e,Q);else{cD(R,29494,Q);W=i[w>>0]|0;h=W<<24>>24<0;fC((k[O>>2]|0)+-24|0,h?k[R>>2]|0:R,h?k[x>>2]|0:W&255)|0;tC(R)}d=(k[O>>2]|0)+-24|0;k[S>>2]=k[j>>2];GC(R,d,S);d=k[N>>2]|0;if(d>>>0<(k[o>>2]|0)>>>0){k[d>>2]=0;W=d+4|0;k[W>>2]=0;h=k[s>>2]|0;k[d+8>>2]=0;k[d+12>>2]=h;k[d>>2]=k[R>>2];k[W>>2]=k[t>>2];k[d+8>>2]=k[v>>2];k[v>>2]=0;k[t>>2]=0;k[R>>2]=0;k[N>>2]=(k[N>>2]|0)+16}else HC(l,R);dC(R);tC(Q);h=1;d=g}k[c+48>>2]=k[P>>2];f:do if(h?(U=k[N>>2]|0,(k[l>>2]|0)!=(U|0)):0){d=U+-16|0;a=U;while(1){if((a|0)==(d|0))break f;W=a+-16|0;k[N>>2]=W;dC(W);a=k[N>>2]|0}}while(0);a=f;break a}while(0)}while(0);u=V;return a|0}function qE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;g=h;a:do if(((((a|0)!=(b|0)?(i[a>>0]|0)==90:0)?(f=a+1|0,d=uC(f,b,c)|0,!((d|0)==(f|0)|(d|0)==(b|0))):0)?(i[d>>0]|0)==69:0)?(e=d+1|0,(e|0)!=(b|0)):0){d=d+2|0;switch(i[e>>0]|0){case 115:{a=sE(d,b)|0;d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;BC(d+-24|0,30781)|0;break a}case 100:{if((d|0)==(b|0))break a;d=_C(d,b)|0;if((d|0)==(b|0))break a;if((i[d>>0]|0)!=95)break a;e=d+1|0;b=WC(e,b,c)|0;f=c+4|0;if((b|0)==(e|0)){e=k[f>>2]|0;d=e+-24|0;while(1){if((e|0)==(d|0))break a;g=e+-24|0;k[f>>2]=g;cC(g);e=k[f>>2]|0}}d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(g,d+-24|0);a=k[f>>2]|0;d=a+-24|0;e=a;while(1){if((e|0)==(d|0))break;c=e+-24|0;k[f>>2]=c;cC(c);e=k[f>>2]|0}BC(a+-48|0,29494)|0;a=i[g+11>>0]|0;c=a<<24>>24<0;fC((k[f>>2]|0)+-24|0,c?k[g>>2]|0:g,c?k[g+4>>2]|0:a&255)|0;tC(g);a=b;break a}default:{d=WC(e,b,c)|0;if((d|0)==(e|0)){d=c+4|0;b=k[d>>2]|0;e=b+-24|0;while(1){if((b|0)==(e|0))break a;g=b+-24|0;k[d>>2]=g;cC(g);b=k[d>>2]|0}}a=sE(d,b)|0;f=c+4|0;d=k[f>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(g,d+-24|0);d=k[f>>2]|0;e=d+-24|0;b=d;while(1){if((b|0)==(e|0))break;c=b+-24|0;k[f>>2]=c;cC(c);b=k[f>>2]|0}BC(d+-48|0,29494)|0;c=i[g+11>>0]|0;b=c<<24>>24<0;fC((k[f>>2]|0)+-24|0,b?k[g>>2]|0:g,b?k[g+4>>2]|0:c&255)|0;tC(g);break a}}}while(0);u=h;return a|0}function rE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b-a|0)>1){if((i[a>>0]|0)==83?(i[a+1>>0]|0)==116:0){d=a+2|0;if((d|0)==(b|0)){e=0;d=b}else{e=0;d=(i[d>>0]|0)==76?a+3|0:d}}else{e=1;d=a}b=KD(d,b,c)|0;d=(b|0)==(d|0);if(!(e|d)){d=k[c+4>>2]|0;if((k[c>>2]|0)!=(d|0)){AC(d+-24|0,0,29716)|0;a=b}}else a=d?a:b}return a|0}function sE(a,b){a=a|0;b=b|0;var c=0,d=0;a:do if((a|0)!=(b|0)){d=i[a>>0]|0;c=a+1|0;if(d<<24>>24!=95){if(((d<<24>>24)+-48|0)>>>0>=10){c=a;break}while(1){if((c|0)==(b|0)){c=b;break a}if(((i[c>>0]|0)+-48|0)>>>0>=10)break a;c=c+1|0}}if((c|0)!=(b|0)){d=i[c>>0]|0;c=a+2|0;if(((d<<24>>24)+-48|0)>>>0>=10)if(d<<24>>24==95){do{d=c;c=c+1|0;if((d|0)==(b|0)){c=a;break a}d=i[d>>0]|0}while(((d<<24>>24)+-48|0)>>>0<10);return (d<<24>>24==95?c:a)|0}else c=a}else c=a}else c=a;while(0);return c|0}function tE(a,b){a=a|0;b=b|0;var c=0,d=0;if((a|0)!=(b|0)){c=i[b+11>>0]|0;d=c<<24>>24<0;FD(a,d?k[b>>2]|0:b,d?k[b+4>>2]|0:c&255)}return}function uE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30813,21);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function vE(a,b){a=a|0;b=b|0;k[a>>2]=k[b>>2];return}function wE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;h=u;u=u+32|0;e=h+20|0;f=h;g=a+4|0;c=((k[g>>2]|0)-(k[a>>2]|0)>>4)+1|0;d=yE(a)|0;if(d>>>0>>0)Sy(a);i=k[a>>2]|0;l=(k[a+8>>2]|0)-i|0;j=l>>3;zE(f,l>>4>>>0>>1>>>0?(j>>>0>>0?c:j):d,(k[g>>2]|0)-i>>4,a+12|0);g=f+8|0;d=k[g>>2]|0;vE(e,b);k[d>>2]=0;k[d+4>>2]=0;e=k[e>>2]|0;k[d+8>>2]=0;k[d+12>>2]=e;k[g>>2]=d+16;AE(a,f);BE(f);u=h;return}function xE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do if((a|0)!=(b|0)){e=a+1|0;switch(i[a>>0]|0){case 88:{d=aD(e,b,c)|0;if((d|0)==(e|0)|(d|0)==(b|0))break a;a=(i[d>>0]|0)==69?d+1|0:a;break a}case 74:{if((e|0)==(b|0))break a;else d=e;while(1){if((i[d>>0]|0)==69)break;e=xE(d,b,c)|0;if((e|0)==(d|0))break a;else d=e}a=d+1|0;break a}case 76:{if((e|0)!=(b|0)?(i[e>>0]|0)==90:0){e=a+2|0;d=uC(e,b,c)|0;if((d|0)==(e|0)|(d|0)==(b|0))break a;a=(i[d>>0]|0)==69?d+1|0:a;break a}a=eD(a,b,c)|0;break a}default:{a=xC(a,b,c)|0;break a}}}while(0);return a|0}function yE(a){a=a|0;return 268435455}function zE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a+12>>2]=0;k[a+16>>2]=d;if(!b)d=0;else d=CE(d,b)|0;k[a>>2]=d;c=d+(c<<4)|0;k[a+8>>2]=c;k[a+4>>2]=c;k[a+12>>2]=d+(b<<4);return}function AE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k[a>>2]|0;e=a+4|0;f=b+4|0;c=k[e>>2]|0;while(1){if((c|0)==(d|0))break;j=k[f>>2]|0;h=j+-16|0;g=c+-16|0;k[h>>2]=0;i=j+-12|0;k[i>>2]=0;l=k[c+-4>>2]|0;k[j+-8>>2]=0;k[j+-4>>2]=l;k[h>>2]=k[g>>2];h=c+-12|0;k[i>>2]=k[h>>2];i=c+-8|0;k[j+-8>>2]=k[i>>2];k[i>>2]=0;k[h>>2]=0;k[g>>2]=0;k[f>>2]=(k[f>>2]|0)+-16;c=g}i=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=i;i=b+8|0;l=k[e>>2]|0;k[e>>2]=k[i>>2];k[i>>2]=l;i=a+8|0;l=b+12|0;j=k[i>>2]|0;k[i>>2]=k[l>>2];k[l>>2]=j;k[b>>2]=k[f>>2];return}function BE(a){a=a|0;var b=0,c=0,d=0;b=k[a+4>>2]|0;c=a+8|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-16|0;k[c>>2]=d;jC(d)}b=k[a>>2]|0;if(b|0)oC(k[a+16>>2]|0,b,(k[a+12>>2]|0)-b>>4);return}function CE(a,b){a=a|0;b=b|0;return iE(k[a>>2]|0,b<<4)|0}function DE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30838,2);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function EE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p;o=a+11|0;c=i[o>>0]|0;d=c<<24>>24<0;if(d){m=k[a+4>>2]|0;h=m>>>0<11?m:11;c=(k[a+8>>2]&2147483647)+-1|0}else{m=c&255;h=m>>>0<11?m:11;c=10}if((h-m+c|0)>>>0>>0)pC(a,c,m+b-h-c|0,m,0,h,b,30841);else{if(d)l=k[a>>2]|0;else l=a;do if((h|0)!=(b|0)){g=m-h|0;if(!g){d=h;f=0;e=30841;c=b;j=17}else{if(h>>>0>b>>>0){QA(l,30841,b)|0;QA(l+b|0,l+h|0,g)|0;d=h;c=b;break}do if(l>>>0<30841>>>0&(l+m|0)>>>0>30841>>>0)if((l+h|0)>>>0>30841>>>0){QA(l,30841,h)|0;d=0;f=h;e=30841+b|0;c=b-h|0;break}else{d=h;f=0;e=30841+(b-h)|0;c=b;break}else{d=h;f=0;e=30841;c=b}while(0);j=l+f|0;QA(j+c|0,j+d|0,g)|0;j=17}}else{d=b;f=0;e=30841;c=b;j=17}while(0);if((j|0)==17)QA(l+f|0,e,c)|0;c=c-d+m|0;if((i[o>>0]|0)<0)k[a+4>>2]=c;else i[o>>0]=c;i[n>>0]=0;Tr(l+c|0,n)}u=p;return}function FE(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,j=0,l=0,m=0,n=0;n=u;u=u+16|0;l=n;m=a+11|0;e=i[m>>0]|0;if(e<<24>>24<0)j=k[a+4>>2]|0;else j=e&255;if(j>>>0>>0){IA(a);e=i[m>>0]|0}e=e<<24>>24<0;if(e)f=(k[a+8>>2]&2147483647)+-1|0;else f=10;h=j+d|0;if((f-j|0)>>>0>=d>>>0){if(d|0){if(e)g=k[a>>2]|0;else g=a;e=j-b|0;f=g+b|0;if(e){QA(f+d|0,f,e)|0;c=f>>>0<=c>>>0&(g+j|0)>>>0>c>>>0?c+d|0:c}QA(f,c,d)|0;if((i[m>>0]|0)<0)k[a+4>>2]=h;else i[m>>0]=h;i[l>>0]=0;Tr(g+h|0,l)}}else pC(a,f,h-f|0,j,b,0,d,c);u=n;return a|0}function GE(a){a=a|0;return 268435455}function HE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a+12>>2]=0;k[a+16>>2]=d;if(!b)d=0;else d=KE(d,b)|0;k[a>>2]=d;c=d+(c<<4)|0;k[a+8>>2]=c;k[a+4>>2]=c;k[a+12>>2]=d+(b<<4);return}function IE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k[a>>2]|0;e=a+4|0;f=b+4|0;c=k[e>>2]|0;while(1){if((c|0)==(d|0))break;j=k[f>>2]|0;h=j+-16|0;g=c+-16|0;k[h>>2]=0;i=j+-12|0;k[i>>2]=0;l=k[c+-4>>2]|0;k[j+-8>>2]=0;k[j+-4>>2]=l;k[h>>2]=k[g>>2];h=c+-12|0;k[i>>2]=k[h>>2];i=c+-8|0;k[j+-8>>2]=k[i>>2];k[i>>2]=0;k[h>>2]=0;k[g>>2]=0;k[f>>2]=(k[f>>2]|0)+-16;c=g}i=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=i;i=b+8|0;l=k[e>>2]|0;k[e>>2]=k[i>>2];k[i>>2]=l;i=a+8|0;l=b+12|0;j=k[i>>2]|0;k[i>>2]=k[l>>2];k[l>>2]=j;k[b>>2]=k[f>>2];return}function JE(a){a=a|0;var b=0,c=0,d=0;b=k[a+4>>2]|0;c=a+8|0;while(1){d=k[c>>2]|0;if((d|0)==(b|0))break;d=d+-16|0;k[c>>2]=d;dC(d)}b=k[a>>2]|0;if(b|0)kC(k[a+16>>2]|0,b,(k[a+12>>2]|0)-b>>4);return}function KE(a,b){a=a|0;b=b|0;return iE(k[a>>2]|0,b<<4)|0}function LE(a){a=a|0;var b=0;if(!(dE(a)|0))Sy(a);b=hE(a+12|0,1)|0;k[a+4>>2]=b;k[a>>2]=b;k[a+8>>2]=b+24;return}function ME(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=u;u=u+16|0;e=h;g=a+11|0;b=i[g>>0]|0;if(b<<24>>24<0){f=k[a>>2]|0;c=k[a+4>>2]|0}else{f=a;c=b&255}d=(c|0)!=0&1;c=c-d|0;if(c){QA(f,f+d|0,c)|0;b=i[g>>0]|0}if(b<<24>>24<0)k[a+4>>2]=c;else i[g>>0]=c;i[e>>0]=0;Tr(f+c|0,e);u=h;return}function NE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,30614,7);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function OE(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,3);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function PE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,31034,18);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function QE(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,b,8);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function RE(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;$C(a,31027,6);b=a+12|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function SE(a,b){a=a|0;b=b|0;k[a>>2]=b;k[a+4>>2]=k[b>>2];return}function TE(a,b){a=a|0;b=b|0;k[a>>2]=b;i[a+4>>0]=i[b>>0]|0;return}function UE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+64|0;g=p+60|0;h=p+48|0;j=p+36|0;l=p+24|0;m=p+12|0;n=p;a:do if((b-a|0)>2){f=a+2|0;d=a+1|0;switch(i[a>>0]|0){case 84:break;case 71:switch(i[d>>0]|0){case 86:{e=WC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31252)|0;a=e;o=60;break a}case 82:{e=WC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31272)|0;a=e;o=60;break a}default:{o=60;break a}}default:{o=60;break a}}switch(i[d>>0]|0){case 86:{e=xC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31101)|0;a=e;o=60;break a}case 84:{e=xC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31113)|0;a=e;o=60;break a}case 73:{e=xC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31122)|0;a=e;o=60;break a}case 83:{e=xC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31136)|0;a=e;o=60;break a}case 99:{d=XE(f,b)|0;if((d|0)==(f|0)){o=60;break a}f=XE(d,b)|0;if((f|0)==(d|0)){o=60;break a}e=uC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=k[c+4>>2]|0;if((k[c>>2]|0)==(d|0))break a;AC(d+-24|0,0,31155)|0;a=e;o=60;break a}case 67:{e=xC(f,b,c)|0;if((e|0)==(f|0)){o=60;break a}d=_C(e,b)|0;if((d|0)==(e|0)|(d|0)==(b|0)){o=60;break a}if((i[d>>0]|0)!=95){o=60;break a}e=d+1|0;f=xC(e,b,c)|0;if((f|0)==(e|0)){o=60;break a}e=c+4|0;d=k[e>>2]|0;if(((d-(k[c>>2]|0)|0)/24|0)>>>0<2)break a;PC(h,d+-24|0);d=k[e>>2]|0;a=d+-24|0;while(1){if((d|0)==(a|0))break;o=d+-24|0;k[e>>2]=o;cC(o);d=k[e>>2]|0}AC(h,0,31182)|0;k[m>>2]=k[h>>2];k[m+4>>2]=k[h+4>>2];k[m+8>>2]=k[h+8>>2];a=0;while(1){if((a|0)==3)break;k[h+(a<<2)>>2]=0;a=a+1|0}BC(m,31207)|0;k[l>>2]=k[m>>2];k[l+4>>2]=k[m+4>>2];k[l+8>>2]=k[m+8>>2];a=0;while(1){if((a|0)==3)break;k[m+(a<<2)>>2]=0;a=a+1|0}PC(n,(k[e>>2]|0)+-24|0);a=i[n+11>>0]|0;o=a<<24>>24<0;fC(l,o?k[n>>2]|0:n,o?k[n+4>>2]|0:a&255)|0;k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];a=0;while(1){if((a|0)==3)break;k[l+(a<<2)>>2]=0;a=a+1|0}a=k[e>>2]|0;d=a+-24|0;e=d+11|0;if((i[e>>0]|0)<0){o=k[d>>2]|0;i[g>>0]=0;Tr(o,g);k[a+-20>>2]=0}else{i[g>>0]=0;Tr(d,g);i[e>>0]=0}bD(d);k[d>>2]=k[j>>2];k[d+4>>2]=k[j+4>>2];k[d+8>>2]=k[j+8>>2];a=0;while(1){if((a|0)==3)break;k[j+(a<<2)>>2]=0;a=a+1|0}tC(j);tC(n);tC(l);tC(m);tC(h);a=f;o=60;break a}default:{e=XE(d,b)|0;do if((e|0)!=(d|0)){d=uC(e,b,c)|0;if((d|0)!=(e|0)){e=k[c+4>>2]|0;if((k[c>>2]|0)!=(e|0)){e=e+-24|0;if((i[f>>0]|0)==118){AC(e,0,31212)|0;e=0;break}else{AC(e,0,31230)|0;e=0;break}}else{e=1;d=a}}else{e=0;d=a}}else{e=3;d=a}while(0);switch(e&3){case 3:case 0:{a=d;o=60;break a}default:{}}if(!e){a=d;o=60;break a}else break a}}}else o=60;while(0);u=p;return a|0}function VE(a){a=a|0;i[k[a>>2]>>0]=i[a+4>>0]|0;return}function WE(a){a=a|0;k[k[a>>2]>>2]=k[a+4>>2];return}function XE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:do if((a|0)!=(b|0)){e=a+1|0;switch(i[a>>0]|0){case 104:{c=_C(e,b)|0;if((c|0)==(e|0)|(c|0)==(b|0))break a;return ((i[c>>0]|0)==95?c+1|0:a)|0}case 118:break;default:break a}c=_C(e,b)|0;if((!((c|0)==(e|0)|(c|0)==(b|0))?(i[c>>0]|0)==95:0)?(e=c+1|0,d=_C(e,b)|0,!((d|0)==(e|0)|(d|0)==(b|0))):0)a=(i[d>>0]|0)==95?d+1|0:a}while(0);return a|0}function YE(a,b){a=a|0;b=b|0;k[a>>2]=b;return}function ZE(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;b=k[b>>2]|0;k[a+8>>2]=0;k[a+12>>2]=b;return}function _E(a,b){a=a|0;b=b|0;k[a>>2]=b;return}function $E(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;b=k[b>>2]|0;k[a+8>>2]=0;k[a+12>>2]=b;return}function aF(a){a=a|0;if((i[a>>0]|0)==1)a=0;else{i[a>>0]=1;a=1}return a|0}function bF(a){a=a|0;return}function cF(a){a=a|0;k[a>>2]=10528;return}function dF(){var a=0;a=k[8636]|0;k[8636]=a+0;return a|0}function eF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;k[d>>2]=k[c>>2];a=Sc[k[(k[a>>2]|0)+16>>2]&63](a,b,d)|0;if(a)k[c>>2]=k[d>>2];u=e;return a&1|0}function fF(a){a=a|0;if(!a)a=0;else a=(xB(a,1992,2064,0)|0)!=0;return a&1|0}function gF(){}function hF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (N=d,a-c>>>0|0)|0}function iF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+c|0;b=b&255;if((c|0)>=67){while(a&3){i[a>>0]=b;a=a+1|0}d=f&-4|0;e=d-64|0;g=b|b<<8|b<<16|b<<24;while((a|0)<=(e|0)){k[a>>2]=g;k[a+4>>2]=g;k[a+8>>2]=g;k[a+12>>2]=g;k[a+16>>2]=g;k[a+20>>2]=g;k[a+24>>2]=g;k[a+28>>2]=g;k[a+32>>2]=g;k[a+36>>2]=g;k[a+40>>2]=g;k[a+44>>2]=g;k[a+48>>2]=g;k[a+52>>2]=g;k[a+56>>2]=g;k[a+60>>2]=g;a=a+64|0}while((a|0)<(d|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}return f-c|0}function jF(a){a=a|0;return 0}function kF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (N=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function lF(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){N=b>>>c;return a>>>c|(b&(1<>>c-32|0}function mF(a){a=a|0;return 0}function nF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)>=8192)return Ua(a|0,b|0,c|0)|0;f=a|0;e=a+c|0;if((a&3)==(b&3)){while(a&3){if(!c)return f|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}c=e&-4|0;d=c-64|0;while((a|0)<=(d|0)){k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];k[a+12>>2]=k[b+12>>2];k[a+16>>2]=k[b+16>>2];k[a+20>>2]=k[b+20>>2];k[a+24>>2]=k[b+24>>2];k[a+28>>2]=k[b+28>>2];k[a+32>>2]=k[b+32>>2];k[a+36>>2]=k[b+36>>2];k[a+40>>2]=k[b+40>>2];k[a+44>>2]=k[b+44>>2];k[a+48>>2]=k[b+48>>2];k[a+52>>2]=k[b+52>>2];k[a+56>>2]=k[b+56>>2];k[a+60>>2]=k[b+60>>2];a=a+64|0;b=b+64|0}while((a|0)<(c|0)){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0}}else{c=e-4|0;while((a|0)<(c|0)){i[a>>0]=i[b>>0]|0;i[a+1>>0]=i[b+1>>0]|0;i[a+2>>0]=i[b+2>>0]|0;i[a+3>>0]=i[b+3>>0]|0;a=a+4|0;b=b+4|0}}while((a|0)<(e|0)){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0}return f|0}function oF(a){a=a|0;var b=0;b=i[w+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[w+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[w+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[w+(a>>>24)>>0]|0)+24|0}function pF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (N=n,e)|0}else{if(!f){n=0;e=0;return (N=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (N=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(da(h|0)|0)-(da(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (N=n,e)|0}f=g-1|0;if(f&g|0){h=(da(g|0)|0)+33-(da(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e|0){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (N=o,p)|0}else{p=oF(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (N=o,p)|0}}else{if(f){if(e|0){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (N=o,p)|0}if(!l){if(e|0){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (N=o,p)|0}f=h-1|0;if(!(f&h)){if(e|0){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((oF(h|0)|0)>>>0);return (N=o,p)|0}f=(da(h|0)|0)-(da(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (N=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=kF(m|0,l|0,-1,-1)|0;c=N;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;hF(j|0,c|0,d|0,n|0)|0;p=N;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=hF(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=N;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e|0){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (N=o,p)|0}function qF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return pF(a,b,c,d,0)|0}function rF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=aa(e,f)|0;d=a>>>16;a=(c>>>16)+(aa(e,d)|0)|0;e=b>>>16;b=aa(e,f)|0;return (N=(a>>>16)+(aa(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function sF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=rF(e,f)|0;a=N;return (N=(aa(b,f)|0)+(aa(d,e)|0)+a|a&0,c|0|0)|0}function tF(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=k[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ia()|0;kb(12);return -1}k[r>>2]=a;if((a|0)>(ha()|0)?(ga()|0)==0:0){kb(12);k[r>>2]=b;return -1}return b|0}function uF(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){N=b<>>32-c;return a<0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else nF(a,b,c)|0;return a|0}function wF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=u;u=u+16|0;e=f|0;pF(a,b,c,d,e)|0;u=f;return (N=k[e+4>>2]|0,k[e>>2]|0)|0}function xF(a){a=a|0;return 0}function yF(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function zF(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Jc[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function AF(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 Kc[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function BF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Lc[a&7](b|0,c|0,d|0,e|0,f|0)}function CF(a,b){a=a|0;b=b|0;Mc[a&127](b|0)}function DF(a,b,c){a=a|0;b=b|0;c=c|0;Nc[a&63](b|0,c|0)}function EF(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Oc[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function FF(a,b){a=a|0;b=b|0;return Pc[a&127](b|0)|0}function GF(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return Qc[a&1](b|0,+c,+d)|0}function HF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Rc[a&7](b|0,c|0,d|0,e|0)|0}function IF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Sc[a&63](b|0,c|0,d|0)|0}function JF(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;Tc[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function KF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return Uc[a&3](b|0,c|0,+d)|0}function LF(a,b){a=a|0;b=b|0;return +Vc[a&7](b|0)}function MF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;Wc[a&3](b|0,c|0,d|0,e|0,+f)}function NF(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Xc[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function OF(a,b,c){a=a|0;b=b|0;c=c|0;return Yc[a&63](b|0,c|0)|0}function PF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +Zc[a&3](b|0,c|0,d|0)}function QF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return +_c[a&1](b|0,c|0,d|0,e|0)}function RF(a,b,c){a=a|0;b=b|0;c=c|0;return +$c[a&7](b|0,c|0)}function SF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ad[a&1](b|0,c|0,d|0,+e)|0}function TF(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 bd[a&31](b|0,c|0,d|0,e|0,f|0)|0}function UF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cd[a&63](b|0,c|0,d|0)}function VF(a){a=a|0;dd[a&3]()}function WF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ed[a&3](b|0,c|0,+d)}function XF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return fd[a&7](b|0,c|0,d|0,e|0,+f)|0}function YF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;gd[a&15](b|0,c|0,d|0,e|0)}function ZF(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;ea(0);return 0}function _F(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ea(1);return 0}function $F(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(2)}function aG(a){a=a|0;ea(3)}function bG(a,b){a=a|0;b=b|0;ea(4)}function cG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(5);return 0}function dG(a){a=a|0;ea(6);return 0}function eG(a,b,c){a=a|0;b=+b;c=+c;ea(7);return 0}function fG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(8);return 0}function gG(a,b,c){a=a|0;b=b|0;c=c|0;ea(9);return 0}function hG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(10)}function iG(a,b,c){a=a|0;b=b|0;c=+c;ea(11);return 0}function jG(a){a=a|0;ea(12);return 0.0}function kG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ea(13)}function lG(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ea(14);return 0}function mG(a,b){a=a|0;b=b|0;ea(15);return 0}function nG(a,b,c){a=a|0;b=b|0;c=c|0;ea(16);return 0.0}function oG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(17);return 0.0}function pG(a,b){a=a|0;b=b|0;ea(18);return 0.0}function qG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ea(19);return 0}function rG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(20);return 0}function sG(a,b,c){a=a|0;b=b|0;c=c|0;ea(21)}function tG(){ea(22)}function uG(a,b,c){a=a|0;b=b|0;c=+c;ea(23)}function vG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ea(24);return 0}function wG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(25)} - -// EMSCRIPTEN_END_FUNCS -var Jc=[ZF,zv,Fv,Aw,Bw,Kw,Lw,ZF];var Kc=[_F,Sw,Yw,_F];var Lc=[$F,rB,AB,TB,Wk,bl,$F,$F];var Mc=[aG,ti,Vi,Wi,Xi,wr,xr,yr,zr,Zi,_i,_q,ar,br,cr,Mr,Nr,Or,Vr,Wr,as,bs,Ws,Xs,vt,wt,Nt,Ot,_t,$t,Lu,Mu,xv,yv,Dv,Ev,Iv,Jv,Tv,Uv,cw,dw,nw,ow,yw,zw,Iw,Jw,Qw,Rw,Ww,Xw,ax,bx,fx,gx,Ur,vx,kx,Kx,Lx,Wx,Xx,Zx,_x,ky,ly,ry,sy,yy,zy,My,Ny,Oy,lB,mB,nB,oB,yB,IB,JB,MB,OB,RB,gf,kg,rg,wh,Yh,vj,Tj,Yj,Yk,dl,im,Km,Sn,us,ws,NA,pu,ru,tu,aB,bv,dv,fv,Cw,Pq,EB,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG,aG];var Nc=[bG,dr,Mv,Nv,Ov,Pv,Rv,Sv,Xv,Yv,Zv,_v,aw,bw,gw,hw,iw,jw,lw,mw,rw,sw,tw,uw,ww,xw,ex,jx,oy,py,qy,vy,wy,xy,td,Ad,Bd,Cd,Hd,Od,Pd,Vd,Zd,_d,$d,oe,pe,ue,we,xe,ye,De,Ke,Le,Me,Se,We,Xe,Ye,bG,bG,bG,bG,bG];var Oc=[cG,cs,ds,es,fs,gs,hs,is,js,ks,ls,ms,Ys,Zs,_s,$s,at,bt,ct,dt,et,ft,gt,zt,Bt,Rt,Tt,bu,cu,du,eu,fu,Ou,Pu,Qu,Ru,Su,Tw,Zw,Qf,_g,Ck,Ml,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG,cG];var Pc=[dG,hr,ir,bj,lr,vo,kr,au,hu,iu,ju,ku,lu,mu,nu,Nu,Uu,Vu,Wu,Xu,Yu,Zu,_u,Kv,Lv,Qv,Vv,Wv,$v,ew,fw,kw,pw,qw,vw,ox,px,rx,Gx,Hx,Jx,my,ny,ty,uy,zx,Ax,Cx,Px,Qx,Sx,KB,ff,nf,ud,vd,jg,qg,Hg,Qd,Rd,Sd,Wd,Xd,Yd,vh,xh,Xh,Zh,uj,wj,Sj,Xj,bk,qe,re,Xk,cl,tl,Ne,Oe,Pe,Te,Ue,Ve,hm,jm,Jm,Lm,Rn,Tn,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG,dG];var Qc=[eG,Vj];var Rc=[fG,ey,By,Cy,Dy,Jy,ik,Vk];var Sc=[gG,er,jr,nr,wo,xo,Do,wp,Rr,Zr,cx,hx,ay,cy,fy,Ay,Fy,Hy,Ky,pB,NB,PB,kf,rf,dg,mg,xg,Sg,rh,uh,Wh,tj,Rj,_j,fk,Gk,Rk,_k,jl,Cl,Zl,dm,gm,Im,Qn,po,uq,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG,gG];var Tc=[hG,$i,fr,dx,ix,qB,zB,SB,zd,Ud,ve,Re,hG,hG,hG,hG];var Uc=[iG,Uf,lh,iG];var Vc=[jG,xd,yd,Td,ie,je,te,Qe];var Wc=[kG,ig,pg,kG];var Xc=[lG,gu,Tu,lx,mx,Dx,Ex,wx,xx,Mx,Nx,lG,lG,lG,lG,lG];var Yc=[mG,cj,dj,mr,or,$x,by,dy,Ey,Gy,Iy,jf,of,wf,xf,gg,lg,wg,Ig,Ug,Wg,Xg,ah,bh,ch,dh,yh,_h,xj,Uj,Zj,ck,kk,mk,Ak,Uk,Zk,il,ul,El,Gl,Il,Ol,Pl,Ql,Rl,km,Mm,Un,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG,mG];var Zc=[nG,Bf,Id,nk];var _c=[oG,hg];var $c=[pG,wd,Of,Yg,Wj,se,zk,Kl];var ad=[qG,uf];var bd=[rG,Pr,Xr,xt,yt,At,Et,Pt,Qt,St,Wt,nx,qx,Fx,Ix,gy,Ly,yx,Bx,Ox,Rx,rG,rG,rG,rG,rG,rG,rG,rG,rG,rG,rG];var cd=[sG,pd,qd,sd,Sf,Dd,Ed,Fd,Gd,Kd,Ld,Nd,hh,ae,be,ce,de,ee,fe,ge,he,ke,le,ne,Dk,Ek,ze,Ae,Be,Ce,Ge,He,Je,Sl,Vl,Ze,_e,$e,af,bf,cf,df,ef,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG,sG];var dd=[tG,iB,DB,tG];var ed=[uG,Rf,eh,uG];var fd=[vG,Ct,Dt,Ut,Vt,vG,vG,vG];var gd=[wG,aj,gr,Qr,Yr,sB,BB,UB,rd,Jd,Md,me,Ee,Fe,Ie,wG];return{___udivdi3:qF,_bitshift64Lshr:lF,_bitshift64Shl:uF,_sbrk:tF,_fflush:qq,___cxa_is_pointer_type:fF,_llvm_cttz_i32:oF,___cxa_demangle:YB,_memcpy:nF,_llvm_bswap_i32:yF,___muldi3:sF,___uremdi3:wF,_i64Subtract:hF,___udivmoddi4:pF,_i64Add:kF,_pthread_mutex_unlock:xF,_emscripten_get_global_libc:uo,___getTypeName:to,_pthread_cond_broadcast:mF,___errno_location:zo,___muldsi3:rF,___cxa_can_catch:eF,_free:Pq,_memmove:vF,_malloc:Oq,_pthread_mutex_lock:jF,_memset:iF,__GLOBAL__sub_I_embind_cpp:qo,__GLOBAL__sub_I_bind_cpp:ro,runPostSets:gF,_emscripten_replace_memory:Ic,stackAlloc:hd,stackSave:id,stackRestore:jd,establishStackSpace:kd,setTempRet0:md,getTempRet0:nd,setThrew:ld,stackAlloc:hd,stackSave:id,stackRestore:jd,establishStackSpace:kd,setThrew:ld,setTempRet0:md,getTempRet0:nd,dynCall_iiiiiiii:zF,dynCall_iiiiiid:AF,dynCall_viiiii:BF,dynCall_vi:CF,dynCall_vii:DF,dynCall_iiiiiii:EF,dynCall_ii:FF,dynCall_iidd:GF,dynCall_iiiii:HF,dynCall_iiii:IF,dynCall_viiiiii:JF,dynCall_iiid:KF,dynCall_di:LF,dynCall_viiiid:MF,dynCall_iiiiiiiii:NF,dynCall_iii:OF,dynCall_diii:PF,dynCall_diiii:QF,dynCall_dii:RF,dynCall_iiiid:SF,dynCall_iiiiii:TF,dynCall_viii:UF,dynCall_v:VF,dynCall_viid:WF,dynCall_iiiiid:XF,dynCall_viiii:YF}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module["stackSave"]=asm["stackSave"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var __GLOBAL__sub_I_embind_cpp=Module["__GLOBAL__sub_I_embind_cpp"]=asm["__GLOBAL__sub_I_embind_cpp"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=asm["_pthread_mutex_unlock"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=asm["_pthread_cond_broadcast"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _memmove=Module["_memmove"]=asm["_memmove"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=asm["_pthread_mutex_lock"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memset=Module["_memset"]=asm["_memset"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidd=Module["dynCall_iidd"]=asm["dynCall_iidd"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_iiiid=Module["dynCall_iiiid"]=asm["dynCall_iiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];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_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;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"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){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(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}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() - -export default Module; - - diff --git a/node/linear-algebra/linear-algebra.js b/node/linear-algebra/linear-algebra.js deleted file mode 100644 index ccbd85d..0000000 --- a/node/linear-algebra/linear-algebra.js +++ /dev/null @@ -1,19 +0,0 @@ -import Vector from './vector.js'; -import memoryManager from './emscripten-memory-manager.js'; -import Complex from './complex.js'; -import DenseMatrix from './dense-matrix.js'; -import ComplexDenseMatrix from' ./complex-dense-matrix.js'; -import { SparseMatrix, Triplet } from './sparse-matrix.js'; -import { ComplexSparseMatrix, ComplexTriplet } from './complex-sparse-matrix.js'; - -export default { - Vector, - memoryManager, - Complex, - DenseMatrix, - SparseMatrix, - Triplet, - ComplexDenseMatrix, - ComplexSparseMatrix, - ComplexTriplet -}; \ No newline at end of file diff --git a/node/linear-algebra/sparse-matrix.js b/node/linear-algebra/sparse-matrix.js deleted file mode 100644 index 1a656a0..0000000 --- a/node/linear-algebra/sparse-matrix.js +++ /dev/null @@ -1,409 +0,0 @@ -import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; -import DenseMatrix from './dense-matrix.js'; - -class SparseMatrix { - /** - * This class represents a m by n real matrix where only nonzero entries - * are stored explicitly. Do not create a SparseMatrix from its constructor, - * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor SparseMatrix - * @example - * let T = new Triplet(100, 100); - * T.addEntry(3.4, 11, 43); - * T.addEntry(6.4, 99, 99); - * let A = SparseMatrix.fromTriplet(T); - * - * let B = SparseMatrix.identity(10, 10); - * - * let d = DenseMatrix.ones(100, 1); - * let C = SparseMatrix.diag(d); - */ - constructor(data) { - this.data = data; - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this sparse matrix. - * @ignore - * @method SparseMatrix#delete - */ - delete() { - this.data.delete(); - } - - /** - * Initializes a sparse matrix from a {@link Triplet} object. - * @method SparseMatrix.fromTriplet - * @param {Triplet} T A triplet object containing only the nonzero entries that - * need to be stored in this sparse matrix. - * @returns {SparseMatrix} - */ - static fromTriplet(T) { - return new SparseMatrix(new Module.SparseMatrix(T.data)); - } - - /** - * Initializes a m by n sparse identity matrix. - * @method SparseMatrix.identity - * @param {number} m The number of rows in this sparse matrix. - * @param {number} n The number of columns in this sparse matrix. - * @returns {SparseMatrix} - */ - static identity(m, n) { - return new SparseMatrix(Module.SparseMatrix.identity(m, n)); - } - - /** - * Initializes a sparse diagonal matrix. - * @method SparseMatrix.diag - * @param {DenseMatrix} d The dense vector (d.nCols() == 1) used to initialize - * this sparse diagonal matrix. - * @returns {SparseMatrix} - */ - static diag(d) { - return new SparseMatrix(Module.SparseMatrix.diag(d.data)); - } - - /** - * Returns the transpose of this sparse matrix. - * @method SparseMatrix#transpose - * @returns {SparseMatrix} - */ - transpose() { - return new SparseMatrix(this.data.transpose()); - } - - /** - * Returns the inverse of this diagonal sparse matrix. - * @method SparseMatrix#invertDiagonal - * @returns {SparseMatrix} - */ - invertDiagonal() { - let N = this.nRows(); - let X = this.timesDense(DenseMatrix.ones(N, 1)); - let T = new Triplet(N, N); - for (let i = 0; i < N; i++) { - T.addEntry(1 / X.get(i, 0), i, i); - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Returns the number of rows in this sparse matrix. - * @method SparseMatrix#nRows - * @returns {number} - */ - nRows() { - return this.data.nRows(); - } - - /** - * Returns the number of columns in this sparse matrix. - * @method SparseMatrix#nCols - * @returns {number} - */ - nCols() { - return this.data.nCols(); - } - - /** - * Returns the number of nonzero entries in this sparse matrix. - * @method SparseMatrix#nnz - * @returns {number} - */ - nnz() { - return this.data.nnz(); - } - - /** - * Computes the frobenius norm of this sparse matrix. - * @method SparseMatrix#frobeniusNorm - * @returns {number} - */ - frobeniusNorm() { - return this.data.frobeniusNorm(); - } - - /** - * Extracts a sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix - * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method SparseMatrix#subMatrix - * @param {number} r0 The start row index. - * @param {number} r1 The end row index (not included). - * @param {number} c0 The start column index. - * @param {number} c1 The end column index (not included). - * @returns {SparseMatrix} - */ - subMatrix(r0, r1, c0, c1) { - return new SparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); - } - - /** - * Returns a sparse {@link Cholesky} factorization of this sparse matrix. - * @method SparseMatrix#chol - * @returns {Cholesky} - */ - chol() { - return new Cholesky(this.data.chol()); - } - - /** - * Returns a sparse {@link LU} factorization of this sparse matrix. - * @method SparseMatrix#lu - * @returns {LU} - */ - lu() { - return new LU(this.data.lu()); - } - - /** - * Returns a sparse {@link QR} factorization of this sparse matrix. - * @method SparseMatrix#qr - * @returns {QR} - */ - qr() { - return new QR(this.data.qr()); - } - - /** - * Returns a dense copy of this sparse matrix. - * @method SparseMatrix#toDense - * @returns {DenseMatrix} - */ - toDense() { - return new DenseMatrix(this.data.toDense()); - } - - /** - * A += B - * @method SparseMatrix#incrementBy - * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. - */ - incrementBy(B) { - this.data.incrementBy(B.data); - } - - /** - * A -= B - * @method SparseMatrix#decrementBy - * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. - */ - decrementBy(B) { - this.data.decrementBy(B.data); - } - - /** - * A *= s - * @method SparseMatrix#scaleBy - * @param {number} s The number this sparse matrix is scaled by. - */ - scaleBy(s) { - this.data.scaleBy(s); - } - - /** - * Returns A + B - * @method SparseMatrix#plus - * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. - * @returns {SparseMatrix} - */ - plus(B) { - return new SparseMatrix(this.data.plus(B.data)); - } - - /** - * Returns A - B - * @method SparseMatrix#minus - * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. - * @returns {SparseMatrix} - */ - minus(B) { - return new SparseMatrix(this.data.minus(B.data)); - } - - /** - * Returns A * s - * @method SparseMatrix#timesReal - * @param {number} s The number this sparse matrix is multiplied by. - * @returns {SparseMatrix} - */ - timesReal(s) { - return new SparseMatrix(this.data.timesReal(s)); - } - - /** - * Returns A * X - * @method SparseMatrix#timesDense - * @param {DenseMatrix} X The dense matrix this sparse matrix is multiplied by. - * @returns {DenseMatrix} - */ - timesDense(X) { - return new DenseMatrix(this.data.timesDense(X.data)); - } - - /** - * Returns A * B - * @method SparseMatrix#timesSparse - * @param {SparseMatrix} B The sparse matrix this sparse matrix is multiplied by. - * @returns {SparseMatrix} - */ - timesSparse(B) { - return new SparseMatrix(this.data.timesSparse(B.data)); - } -} - -class Triplet { - /** - * This class represents a small structure to hold nonzero entries in a {@link SparseMatrix}. - * Each entry is a triplet of a value and the (i, j)th indices, i.e., (x, i, j). - * @constructor Triplet - * @param {number} m The number of rows in the sparse matrix that will be initialized - * from this triplet. - * @param {number} n The number of columns in the sparse matrix that will be initialized - * from this triplet. - * @example - * let T = new Triplet(100, 100); - * T.addEntry(3.4, 11, 43); - * T.addEntry(6.4, 99, 99); - * - * let A = SparseMatrix.fromTriplet(T); - */ - constructor(m, n) { - this.data = new Module.Triplet(m, n); - memoryManager.objectList.push(this); - } - - /** - * Deletes the emscripten heap allocated data of this sparse matrix. - * @method Triplet#delete - * @ignore - */ - delete() { - this.data.delete(); - } - - /** - * A(i, j) += x - * @method Triplet#addEntry - * @param {number} x The value of the nonzero entry being inserted into this triplet. - * @param {number} i The ith row of the sparse matrix that will be initialized - * from this triplet. - * @param {number} j The jth column of the sparse matrix that will be initialized - * from this triplet. - */ - addEntry(x, i, j) { - this.data.addEntry(i, j, x); - } -} - -class Cholesky { - /** - * This class represents a Choleksy LL^T factorization of a square positive definite - * {@link SparseMatrix}. The factorization is computed on the first call to solvePositiveDefinite, - * and is reused in subsequent calls to solvePositiveDefinite (e.g. when only the - * right hand side b of the linear system Ax = b changes) unless the sparse matrix - * itself is altered through operations such as *=, += and -=. Do not use the constructor - * to initialize this class, instead access the Choleksy factorization of a sparse - * matrix directly from the matrix itself. - * @constructor Cholesky - * @example - * // solve the linear system Ax = b, where A is a square positive definite sparse matrix - * let A = SparseMatrix.identity(5, 5); - * let b = DenseMatrix.ones(5, 1); - * - * let llt = A.chol(); - * let x = llt.solvePositiveDefinite(b); - * - * b.scaleBy(5); - * x = llt.solvePositiveDefinite(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a square positive definite sparse matrix. - * @method Cholesky#solvePositiveDefinite - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} - */ - solvePositiveDefinite(b) { - return new DenseMatrix(this.data.solvePositiveDefinite(b.data)); - } -} - -class LU { - /** - * This class represents a LU factorization of a square {@link SparseMatrix}. The factorization - * is computed on the first call to solveSquare, and is reused in subsequent calls - * to solveSquare (e.g. when only the right hand side b of the linear system Ax = b - * changes) unless the sparse matrix itself is altered through operations such as - * *=, += and -=. Do not use the constructor to initialize this class, instead - * access the LU factorization of a sparse matrix directly from the matrix itself. - * @constructor LU - * @example - * // solve the linear system Ax = b, where A is a square sparse matrix - * let A = SparseMatrix.identity(5, 5); - * let b = DenseMatrix.ones(5, 1); - * - * let lu = A.lu(); - * let x = lu.solveSquare(b); - * - * b.scaleBy(5); - * x = lu.solveSquare(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a square sparse matrix. - * @method LU#solveSquare - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} - */ - solveSquare(b) { - return new DenseMatrix(this.data.solveSquare(b.data)); - } -} - -class QR { - /** - * This class represents a QR factorization of a rectangular {@link SparseMatrix}. - * The factorization is computed on the first call to solve, and is reused in - * subsequent calls to solve (e.g. when only the right hand side b of the linear - * system Ax = b changes) unless the sparse matrix itself is altered through - * operations such as *=, += and -=. Do not use the constructor to initialize - * this class, instead access the QR factorization of a sparse matrix directly - * from the matrix itself. - * @constructor QR - * @example - * // solve the linear system Ax = b, where A is a rectangular sparse matrix - * let A = SparseMatrix.identity(5, 5); - * let b = DenseMatrix.ones(5, 1); - * - * let qr = A.qr(); - * let x = qr.solve(b); - * - * b.scaleBy(5); - * x = qr.solve(b); // factorization is reused - */ - constructor(data) { - this.data = data; - } - - /** - * Solves the linear system Ax = b, where A is a rectangular sparse matrix. - * @method QR#solve - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} - */ - solve(b) { - return new DenseMatrix(this.data.solve(b.data)); - } -} - -export { SparseMatrix, Triplet }; \ No newline at end of file diff --git a/node/linear-algebra/vector.js b/node/linear-algebra/vector.js deleted file mode 100644 index ffae7b0..0000000 --- a/node/linear-algebra/vector.js +++ /dev/null @@ -1,184 +0,0 @@ -class Vector { - /** - * This class represents an element of Euclidean 3-space, along with all the usual - * vector space operations (addition, multiplication by scalars, etc.). - * @constructor Vector - * @property {number} x The x component of this vector. Default value is 0. - * @property {number} y The y component of this vector. Default value is 0. - * @property {number} z The z component of this vector. Default value is 0. - */ - constructor(x = 0, y = 0, z = 0) { - this.x = x; - this.y = y; - this.z = z; - } - - /** - * Computes the Euclidean length of this vector. - * @method Vector#norm - * @returns {number} - */ - norm() { - return Math.sqrt(this.norm2()); - } - - /** - * Computes the Euclidean length squared of this vector. - * @method Vector#norm2 - * @returns {number} - */ - norm2() { - return this.dot(this); - } - - /** - * Divides this vector by its Euclidean length. - * @method Vector#normalize - */ - normalize() { - let n = this.norm(); - this.x /= n; - this.y /= n; - this.z /= n; - } - - /** - * Returns a normalized copy of this vector. - * @method Vector#unit - * @returns {Vector} - */ - unit() { - let n = this.norm(); - let x = this.x / n; - let y = this.y / n; - let z = this.z / n; - - return new Vector(x, y, z); - } - - /** - * Checks whether this vector's components are finite. - * @method Vector#isValid - * @returns {boolean} - */ - isValid() { - return !isNaN(this.x) && !isNaN(this.y) && !isNaN(this.z) && - isFinite(this.x) && isFinite(this.y) && isFinite(this.z); - } - - /** - * u += v - * @method Vector#incrementBy - * @param {Vector} v The vector added to this vector. - */ - incrementBy(v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - } - - /** - * u -= v - * @method Vector#decrementBy - * @param {Vector} v The vector subtracted from this vector. - */ - decrementBy(v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - } - - /** - * u *= s - * @method Vector#scaleBy - * @param {number} s The number this vector is scaled by. - */ - scaleBy(s) { - this.x *= s; - this.y *= s; - this.z *= s; - } - - /** - * u /= s - * @method Vector#divideBy - * @param {number} s The number this vector is divided by. - */ - divideBy(s) { - this.scaleBy(1 / s); - } - - /** - * Returns u + v - * @method Vector#plus - * @param {Vector} v The vector added to this vector. - * @return {Vector} - */ - plus(v) { - return new Vector(this.x + v.x, this.y + v.y, this.z + v.z); - } - - /** - * Returns u - v - * @method Vector#minus - * @param {Vector} v The vector subtracted from this vector. - * @return {Vector} - */ - minus(v) { - return new Vector(this.x - v.x, this.y - v.y, this.z - v.z); - } - - /** - * Returns u * s - * @method Vector#times - * @param {number} s The number this vector is multiplied by. - * @return {Vector} - */ - times(s) { - return new Vector(this.x * s, this.y * s, this.z * s); - } - - /** - * Returns u / s - * @method Vector#over - * @param {number} s The number this vector is divided by. - * @return {Vector} - */ - over(s) { - return this.times(1 / s); - } - - /** - * Returns -u - * @method Vector#negated - * @return {Vector} - */ - negated() { - return this.times(-1); - } - - /** - * Computes the dot product of this vector and v - * @method Vector#dot - * @param {Vector} v The vector this vector is dotted with. - * @return {number} - */ - dot(v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - } - - /** - * Computes the cross product of this vector and v - * @method Vector#cross - * @param {Vector} v The vector this vector is crossed with. - * @return {Vector} - */ - cross(v) { - return new Vector( - this.y * v.z - this.z * v.y, - this.z * v.x - this.x * v.z, - this.x * v.y - this.y * v.x); - } -} - -export default Vector; \ No newline at end of file diff --git a/node/projects/direction-field-design/trivial-connections.js b/node/projects/direction-field-design/trivial-connections.js deleted file mode 100644 index 1e02f76..0000000 --- a/node/projects/direction-field-design/trivial-connections.js +++ /dev/null @@ -1,229 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let DenseMatrix = LinearAlgebra.DenseMatrix; -let SparseMatrix = LinearAlgebra.SparseMatrix; -let Triplet = LinearAlgebra.Triplet; -import HodgeDecomposition from '../vector-field-decomposition/hodge-decomposition.js'; -import TreeCotree from '../vector-field-decomposition/tree-cotree.js'; -import HarmonicBases from '../vector-field-decomposition/harmonic-bases.js'; -import { indexElements } from '../../core/mesh.js'; - -class TrivialConnections { - /** - * This class implements the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf trivial connections} algorithm to compute a smooth - * 1-form vector fields on a surface mesh. - * @constructor module:Projects.TrivialConnections - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - * @property {Object} edgeIndex A dictionary mapping each edge of the input mesh to a unique index. - * @property {module:LinearAlgebra.DenseMatrix[]} bases The harmonic bases [γ1, γ2 ... γn] of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} P The period matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} A The 0-form laplace matrix d0^T star1 d0 of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} hodge1 The hodge star 1-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} d0 The exterior derivaitve 0-form matrix of the input mesh. - */ - constructor(geometry) { - this.geometry = geometry; - this.vertexIndex = indexElements(geometry.mesh.vertices); - this.edgeIndex = indexElements(geometry.mesh.edges); - - // initialize hodge decomposition - let hodgeDecomposition = new HodgeDecomposition(geometry); - - // build generators - let treeCotree = new TreeCotree(geometry.mesh); - treeCotree.buildGenerators(); - - // build harmonic bases - let harmonicBases = new HarmonicBases(geometry); - this.bases = harmonicBases.compute(hodgeDecomposition); - - // build period matrix and store relevant DEC operators - this.P = this.buildPeriodMatrix(); - this.A = hodgeDecomposition.A; - this.hodge1 = hodgeDecomposition.hodge1; - this.d0 = hodgeDecomposition.d0; - } - - /** - * Builds the period matrix Pij = ∑_{ek ∈ li} (ξj)k, where li is the ith homology generator, - * ek is a dual edge in li and ξj is the jth harmonic 1-form basis. - * @private - * @method module:Projects.TrivialConnections#buildPeriodMatrix - * @returns {module:LinearAlgebra.SparseMatrix} - */ - buildPeriodMatrix() { - let N = this.bases.length; - let T = new Triplet(N, N); - - for (let i = 0; i < N; i++) { - let generator = this.geometry.mesh.generators[i]; - - for (let j = 0; j < N; j++) { - let basis = this.bases[j]; - let sum = 0; - - for (let h of generator) { - let k = this.edgeIndex[h.edge]; - let sign = h.edge.halfedge === h ? 1 : -1; - - sum += sign * basis.get(k, 0); - } - - T.addEntry(sum, i, j); - } - } - - return SparseMatrix.fromTriplet(T); - } - - /** - * Checks whether Gauss Bonnet is satisfied, i.e., ∑singularity = χ. - * @private - * @method module:Projects.TrivialConnections#satisfyGaussBonnet - * @param {Object} singularity A dictionary mapping each vertex of the input mesh - * to either 0 or 1, where 1 indicates that the vertex is a singularity and 0 - * indicates that it is not. - * @returns {boolean} - */ - satisfyGaussBonnet(singularity) { - let sum = 0; - let mesh = this.geometry.mesh; - for (let v of mesh.vertices) { - sum += singularity[v]; - } - - return Math.abs(mesh.eulerCharacteristic() - sum) < 1e-8; - } - - /** - * Computes the dual 0-form potential β by solving the system d𝛿β = -K + 2π * singularity. - * @private - * @method module:Projects.TrivialConnections#computeCoExactComponent - * @param {Object} singularity A dictionary mapping each vertex of the input mesh - * to either 0 or 1, where 1 indicates that the vertex is a singularity and 0 - * indicates that it is not. - * @returns {module:LinearAlgebra.DenseMatrix} The coexact component 𝛿β. - */ - computeCoExactComponent(singularity) { - let vertices = this.geometry.mesh.vertices; - let V = vertices.length; - - // construct right hand side - let rhs = DenseMatrix.zeros(V, 1); - for (let v of vertices) { - let i = this.vertexIndex[v]; - let u = -this.geometry.angleDefect(v) + 2 * Math.PI * singularity[v]; - - rhs.set(u, i, 0); - } - - // solve linear system - let llt = this.A.chol(); - let betaTilde = llt.solvePositiveDefinite(rhs); - - return this.hodge1.timesDense(this.d0.timesDense(betaTilde)); - } - - /** - * Given an initial angle αi in face i, this function computes the new angle - * αj in the neighboring face j as αj = αi - θij + θji, where θij and θji are - * the angles between the shared edge e and an arbitrary but fixed reference direction - * in faces i and j. Repeating this procedure for n consecutive dual edges in a - * generator gives a sequence of angles α0 , . . . , αn with a resulting total - * angle defect equal to αn - α0. This corresponds to transporting a vector around - * a generator by unfolding, sliding and refolding it across neighboring faces - * without any extra in plane rotation. - * @private - * @method module:Projects.TrivialConnections#transportNoRotation - * @param {Object} h A halfedge lying on the shared edge between face i and j. - * @param {number} alphaI The initial angle αi. - * @returns {number} - */ - transportNoRotation(h, alphaI = 0) { - let u = this.geometry.vector(h); - - let [e1, e2] = this.geometry.orthonormalBases(h.face); - let thetaIJ = Math.atan2(u.dot(e2), u.dot(e1)); - - let [f1, f2] = this.geometry.orthonormalBases(h.twin.face); - let thetaJI = Math.atan2(u.dot(f2), u.dot(f1)); - - return alphaI - thetaIJ + thetaJI; - } - - /** - * Computes the harmonic component γ = ∑_{i = 1, ..., 2g} zi ξi by solving - * the system Pz = v - ∑𝛿β. v - ∑𝛿β should be normalized to lie between -π and π. - * @private - * @method module:Projects.TrivialConnections#computeHarmonicComponent - * @param {module:LinearAlgebra.DenseMatrix} deltaBeta The coexact component 𝛿β. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeHarmonicComponent(deltaBeta) { - let N = this.bases.length; - let E = this.geometry.mesh.edges.length; - let gamma = DenseMatrix.zeros(E, 1); - - if (N > 0) { - // construct right hand side - let rhs = DenseMatrix.zeros(N, 1); - for (let i = 0; i < N; i++) { - let generator = this.geometry.mesh.generators[i]; - let sum = 0; - - for (let h of generator) { - let k = this.edgeIndex[h.edge]; - let sign = h.edge.halfedge === h ? 1 : -1; - - sum += this.transportNoRotation(h); - sum -= sign * deltaBeta.get(k, 0); - } - - // normalize sum between -π and π - while (sum < -Math.PI) sum += 2 * Math.PI; - while (sum >= Math.PI) sum -= 2 * Math.PI; - - rhs.set(sum, i, 0); - } - - // solve linear system - let lu = this.P.lu(); - let z = lu.solveSquare(rhs); - - // compute γ - for (let i = 0; i < N; i++) { - let basis = this.bases[i]; - let zi = z.get(i, 0); - - gamma.incrementBy(basis.timesReal(zi)); - } - } - - return gamma; - } - - /** - * Computes the dual 1-form connections φ = 𝛿β + γ. - * @method module:Projects.TrivialConnections#computeConnections - * @param {Object} singularity A dictionary mapping each vertex of the input mesh - * to either 0 or 1, where 1 indicates that the vertex is a singularity and 0 - * indicates that it is not. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeConnections(singularity) { - if (!this.satisfyGaussBonnet(singularity)) { - alert("Singularities do not add up to the euler characteristic of the mesh"); - return undefined; - } - - // coexact component 𝛿β - let deltaBeta = this.computeCoExactComponent(singularity); - - // extract harmonic component - let gamma = this.computeHarmonicComponent(deltaBeta); - - return deltaBeta.plus(gamma); - } -} - -export default TrivialConnections; \ No newline at end of file diff --git a/node/projects/geodesic-distance/heat-method.js b/node/projects/geodesic-distance/heat-method.js deleted file mode 100644 index e8ec8b2..0000000 --- a/node/projects/geodesic-distance/heat-method.js +++ /dev/null @@ -1,140 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; -let DenseMatrix = LinearAlgebra.DenseMatrix; -import { indexElements } from '../../core/mesh.js'; - -class HeatMethod { - /** - * This class implements the {@link http://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/ heat method} to compute geodesic distance - * on a surface mesh. - * @constructor module:Projects.HeatMethod - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - * @property {module:LinearAlgebra.SparseMatrix} A The laplace matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} F The mean curvature flow operator built on the input mesh. - */ - constructor(geometry) { - this.geometry = geometry; - this.vertexIndex = indexElements(geometry.mesh.vertices); - - // build laplace and flow matrices - let t = Math.pow(geometry.meanEdgeLength(), 2); - let M = geometry.massMatrix(this.vertexIndex); - this.A = geometry.laplaceMatrix(this.vertexIndex); - this.F = M.plus(this.A.timesReal(t)); - } - - /** - * Computes the vector field X = -∇u / |∇u|. - * @private - * @method module:Projects.HeatMethod#computeVectorField - * @param {module:LinearAlgebra.DenseMatrix} u A dense vector (i.e., u.nCols() == 1) representing the - * heat that is allowed to diffuse on the input mesh for a brief period of time. - * @returns {Object} A dictionary mapping each face of the input mesh to a {@link module:LinearAlgebra.Vector Vector}. - */ - computeVectorField(u) { - let X = {}; - for (let f of this.geometry.mesh.faces) { - let normal = this.geometry.faceNormal(f); - let area = this.geometry.area(f); - let gradU = new Vector(); - - for (let h of f.adjacentHalfedges()) { - let i = this.vertexIndex[h.prev.vertex]; - let ui = u.get(i, 0); - let ei = this.geometry.vector(h); - - gradU.incrementBy(normal.cross(ei).times(ui)); - } - - gradU.divideBy(2 * area); - gradU.normalize(); - - X[f] = gradU.negated(); - } - - return X; - } - - /** - * Computes the integrated divergence ∇.X. - * @private - * @method module:Projects.HeatMethod#computeDivergence - * @param {Object} X The vector field -∇u / |∇u| represented by a dictionary - * mapping each face of the input mesh to a {@link module:LinearAlgebra.Vector Vector}. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeDivergence(X) { - let vertices = this.geometry.mesh.vertices; - let V = vertices.length; - let div = DenseMatrix.zeros(V, 1); - - for (let v of vertices) { - let i = this.vertexIndex[v]; - let sum = 0; - - for (let h of v.adjacentHalfedges()) { - if (!h.onBoundary) { - let Xj = X[h.face]; - let e1 = this.geometry.vector(h); - let e2 = this.geometry.vector(h.prev.twin); - let cotTheta1 = this.geometry.cotan(h); - let cotTheta2 = this.geometry.cotan(h.prev); - - sum += (cotTheta1 * e1.dot(Xj) + cotTheta2 * e2.dot(Xj)); - } - } - - div.set(0.5 * sum, i, 0); - } - - return div; - } - - /** - * Shifts φ such that its minimum value is zero. - * @private - * @method module:Projects.HeatMethod#subtractMinimumDistance - * @param {module:LinearAlgebra.DenseMatrix} phi The (minimum 0) solution to the poisson equation Δφ = ∇.X. - */ - subtractMinimumDistance(phi) { - let min = Infinity; - for (let i = 0; i < phi.nRows(); i++) { - min = Math.min(phi.get(i, 0), min); - } - - for (let i = 0; i < phi.nRows(); i++) { - phi.set(phi.get(i, 0) - min, i, 0); - } - } - - /** - * Computes the geodesic distances φ using the heat method. - * @method module:Projects.HeatMethod#compute - * @param {module:LinearAlgebra.DenseMatrix} delta A dense vector (i.e., delta.nCols() == 1) containing - * heat sources, i.e., u0 = δ(x). - * @returns {module:LinearAlgebra.DenseMatrix} - */ - compute(delta) { - // integrate heat flow - let llt = this.F.chol(); - let u = llt.solvePositiveDefinite(delta); - - // compute unit vector field X and divergence ∇.X - let X = this.computeVectorField(u); - let div = this.computeDivergence(X); - - // solve poisson equation Δφ = ∇.X - llt = this.A.chol(); - let phi = llt.solvePositiveDefinite(div.negated()); - - // since φ is unique up to an additive constant, it should - // be shifted such that the smallest distance is zero - this.subtractMinimumDistance(phi); - - return phi; - } -} - -export default HeatMethod; \ No newline at end of file diff --git a/node/projects/geometric-flow/mean-curvature-flow.js b/node/projects/geometric-flow/mean-curvature-flow.js deleted file mode 100644 index 9cbdcb5..0000000 --- a/node/projects/geometric-flow/mean-curvature-flow.js +++ /dev/null @@ -1,78 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let DenseMatrix = LinearAlgebra.DenseMatrix; -import { indexElements } from '../../core/mesh.js'; -import { normalize } from '../../core/geometry.js'; - -class MeanCurvatureFlow { - /** - * This class performs {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. - * @constructor module:Projects.MeanCurvatureFlow - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - */ - constructor(geometry) { - this.geometry = geometry; - this.vertexIndex = indexElements(geometry.mesh.vertices); - } - - /** - * Builds the mean curvature flow operator. - * @private - * @method module:Projects.MeanCurvatureFlow#buildFlowOperator - * @param {module:LinearAlgebra.SparseMatrix} M The mass matrix of the input mesh. - * @param {number} h The timestep. - * @returns {module:LinearAlgebra.SparseMatrix} - */ - buildFlowOperator(M, h) { - let A = this.geometry.laplaceMatrix(this.vertexIndex); - - // F = M + hA - return M.plus(A.timesReal(h)); - } - - /** - * Performs mean curvature flow on the input mesh with timestep h. - * @method module:Projects.MeanCurvatureFlow#integrate - * @param {number} h The timestep. - */ - integrate(h) { - // build the flow and mass matrices - let vertices = this.geometry.mesh.vertices; - let V = vertices.length; - let M = this.geometry.massMatrix(this.vertexIndex); - let F = this.buildFlowOperator(M, h); - - // construct right hand side - let f0 = DenseMatrix.zeros(V, 3); - for (let v of vertices) { - let i = this.vertexIndex[v]; - let p = this.geometry.positions[v]; - - f0.set(p.x, i, 0); - f0.set(p.y, i, 1); - f0.set(p.z, i, 2); - } - - let rhs = M.timesDense(f0); - - // solve linear system (M - hA)fh = Mf0 - let llt = F.chol(); - let fh = llt.solvePositiveDefinite(rhs); - - // update positions - for (let v of vertices) { - let i = this.vertexIndex[v]; - let p = this.geometry.positions[v]; - - p.x = fh.get(i, 0); - p.y = fh.get(i, 1); - p.z = fh.get(i, 2); - } - - // center mesh positions around origin - normalize(this.geometry.positions, vertices, false); - } -} - -export default MeanCurvatureFlow; \ No newline at end of file diff --git a/node/projects/geometric-flow/modified-mean-curvature-flow.js b/node/projects/geometric-flow/modified-mean-curvature-flow.js deleted file mode 100644 index d77c23f..0000000 --- a/node/projects/geometric-flow/modified-mean-curvature-flow.js +++ /dev/null @@ -1,25 +0,0 @@ -import MeanCurvatureFlow from './mean-curvature-flow.js'; - -class ModifiedMeanCurvatureFlow extends MeanCurvatureFlow { - /** - * This class performs a {@link http://www.cs.jhu.edu/~misha/MyPapers/SGP12.pdf modified version} of {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf mean curvature flow} on a surface mesh. - * @constructor module:Projects.ModifiedMeanCurvatureFlow - * @augments module:Projects.MeanCurvatureFlow - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:LinearAlgebra.SparseMatrix} A The laplace matrix of the input mesh. - */ - constructor(geometry) { - super(geometry); - this.A = geometry.laplaceMatrix(this.vertexIndex); - } - - /** - * @inheritdoc - */ - buildFlowOperator(M, h) { - // F = M + hA - return M.plus(this.A.timesReal(h)); - } -} - -export default ModifiedMeanCurvatureFlow; \ No newline at end of file diff --git a/node/projects/parameterization/boundary-first-flattening.js b/node/projects/parameterization/boundary-first-flattening.js deleted file mode 100644 index f4de7a0..0000000 --- a/node/projects/parameterization/boundary-first-flattening.js +++ /dev/null @@ -1,401 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; -let DenseMatrix = LinearAlgebra.DenseMatrix; -let SparseMatrix = LinearAlgebra.SparseMatrix; -import Solvers from '../../utils/solvers.js'; -import { normalize } from '../../core/geometry.js'; - -class BoundaryFirstFlattening { - /** - * This class implements the {@link https://arxiv.org/pdf/1704.06873.pdf boundary first flattening} algorithm to flatten - * surface meshes with a single boundary conformally. - * @constructor module:Projects.BoundaryFirstFlattening - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:Core.Face[]} boundary The boundary of the input mesh. - * @property {number} nV The number of vertices in the input mesh. - * @property {number} nI The number of interior vertices in the input mesh. - * @property {number} nB The number of boundary vertices in the input mesh. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - * @property {Object} bVertexIndex A dictionary mapping each boundary vertex of the input mesh to a unique index. - * @property {module:LinearAlgebra.DenseMatrix} K The integrated gaussian curvatures of the input mesh. - * @property {module:LinearAlgebra.DenseMatrix} k The integrated geodesic curvatures of the input mesh. - * @property {module:LinearAlgebra.DenseMatrix} l The boundary edge lengths of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} A The laplace matrix of the input mesh partitioned by interior and boundary vertices. - * @property {module:LinearAlgebra.SparseMatrix} Aii The upper left block of the partitioned laplace matrix. - * @property {module:LinearAlgebra.SparseMatrix} Aib The upper right block of the partitioned laplace matrix. - * @property {module:LinearAlgebra.SparseMatrix} Abb The lower right block of the partitioned laplace matrix. - */ - constructor(geometry) { - this.geometry = geometry; - this.boundary = geometry.mesh.boundaries[0]; - - this.indexVertices(); - this.computeIntegratedCurvatures(); - this.computeBoundaryLengths(); - - this.A = geometry.laplaceMatrix(this.vertexIndex); - this.Aii = this.A.subMatrix(0, this.nI, 0, this.nI); - this.Aib = this.A.subMatrix(0, this.nI, this.nI, this.nV); - this.Abb = this.A.subMatrix(this.nI, this.nV, this.nI, this.nV); - } - - /** - * Counts the number of interior and boundary vertices in the input mesh and assigns - * unique indices to each vertex. - * @private - * @method module:Projects.BoundaryFirstFlattening#indexVertices - */ - indexVertices() { - let vertices = geometry.mesh.vertices; - this.nV = vertices.length; - this.nI = 0; - this.nB = 0; - this.vertexIndex = {}; - this.bVertexIndex = {}; - - // count interior vertices and map them to a unique index - for (let v of vertices) { - if (!v.onBoundary()) { - this.vertexIndex[v] = this.nI; - this.nI++; - } - } - - // count boundary vertices and map them to unique indices - for (let v of vertices) { - if (v.onBoundary()) { - this.bVertexIndex[v] = this.nB; - this.vertexIndex[v] = this.nI + this.nB; - this.nB++; - } - } - } - - /** - * Computes the integrated gaussian and geodesic curvatures of the input mesh. - * @private - * @method module:Projects.BoundaryFirstFlattening#computeIntegratedCurvatures - */ - computeIntegratedCurvatures() { - this.K = DenseMatrix.zeros(this.nI, 1); - this.k = DenseMatrix.zeros(this.nB, 1); - for (let v of geometry.mesh.vertices) { - let angleDefect = geometry.angleDefect(v); - - if (v.onBoundary()) { - // set the integrated geodesic curvature at this boundary vertex - let i = this.bVertexIndex[v]; - this.k.set(angleDefect, i, 0); - - } else { - // set the integrated gaussian curvature at this interior vertex - let i = this.vertexIndex[v]; - this.K.set(angleDefect, i, 0); - } - } - } - - /** - * Computes the boundary edge lengths of the input mesh. - * @private - * @method module:Projects.BoundaryFirstFlattening#computeBoundaryLengths - */ - computeBoundaryLengths() { - this.l = DenseMatrix.zeros(this.nB, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.bVertexIndex[he.vertex]; - - this.l.set(geometry.length(he.edge), i, 0); - } - } - - /** - * Computes the target boundary edge lengths of the flattening. - * @private - * @method module:Projects.BoundaryFirstFlattening#computeTargetBoundaryLengths - * @param {module:LinearAlgebra.DenseMatrix} u The target boundary scale factors. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeTargetBoundaryLengths(u) { - let lstar = DenseMatrix.zeros(this.nB, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.bVertexIndex[he.vertex]; - let j = this.bVertexIndex[he.next.vertex]; - let ui = u.get(i, 0); - let uj = u.get(j, 0); - let lij = this.l.get(i, 0); - - lstar.set(Math.exp((ui + uj) / 2) * lij, i, 0); - } - - return lstar; - } - - /** - * Computes the dual boundary edge lengths of the flattening. - * @private - * @method module:Projects.BoundaryFirstFlattening#computeDualBoundaryLengths - * @param {Object} flattening A dictionary mapping each vertex to a vector of planar coordinates. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeDualBoundaryLengths(flattening) { - let ldual = DenseMatrix.zeros(this.nB, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let j = this.bVertexIndex[he.vertex]; - let vi = flattening[he.prev.vertex]; - let vj = flattening[he.vertex]; - let vk = flattening[he.next.vertex]; - - ldual.set((vj.minus(vi).norm() + vk.minus(vj).norm()) / 2, j, 0); - } - - return ldual; - } - - /** - * Evaluates the Dirichlet to Neumann map. - * @private - * @method module:Projects.BoundaryFirstFlattening#dirichletToNeumann - * @param {module:LinearAlgebra.DenseMatrix} phi The source term. - * @param {module:LinearAlgebra.DenseMatrix} g The Dirichlet boundary data. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - dirichletToNeumann(phi, g) { - let llt = this.Aii.chol(); - let a = llt.solvePositiveDefinite(phi.minus(this.Aib.timesDense(g))); - - return this.Aib.transpose().timesDense(a).plus(this.Abb.timesDense(g)).negated(); - } - - /** - * Evaluates the Neumann to Dirichlet map. - * @private - * @method module:Projects.BoundaryFirstFlattening#neumannToDirichlet - * @param {module:LinearAlgebra.DenseMatrix} phi The source term. - * @param {module:LinearAlgebra.DenseMatrix} h The Neumann boundary data. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - neumannToDirichlet(phi, h) { - let llt = this.A.chol(); - let a = llt.solvePositiveDefinite(phi.vcat(h.negated())); - - return a.subMatrix(this.nI, this.nV); - } - - /** - * Constructs a best fit closed conformal loop from the prescribed boundary data. - * @private - * @method module:Projects.BoundaryFirstFlattening#constructBestFitCurve - * @param {module:LinearAlgebra.DenseMatrix} lstar The target boundary edge lengths of the flattening. - * @param {module:LinearAlgebra.DenseMatrix} ktilde The target boundary curvatures of the flattening. - * @return {Object} A dictionary mapping each boundary vertex of the input mesh to planar coordinates. - * The values for each coordinate are stored in a {@link module:LinearAlgebra.DenseMatrix dense matrix}. - */ - constructBestFitCurve(lstar, ktilde) { - // compute tangents to the closed boundary curve - let phi = 0; - let T = DenseMatrix.zeros(2, this.nB); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.bVertexIndex[he.vertex]; - - phi += ktilde.get(i, 0); - T.set(Math.cos(phi), 0, i); - T.set(Math.sin(phi), 1, i); - } - - // adjust lengths to ensure the curve closes - let Ninv = SparseMatrix.diag(this.l); - let TT = T.transpose(); - let m = Solvers.invert2x2(T.timesDense(Ninv.timesDense(TT))); - let ltilde = lstar.minus(Ninv.timesDense(TT.timesDense(m.timesDense(T.timesDense(lstar))))); - - // build the curve - let re = 0; - let im = 0; - let gammaRe = DenseMatrix.zeros(this.nB, 1); - let gammaIm = DenseMatrix.zeros(this.nB, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.bVertexIndex[he.vertex]; - - gammaRe.set(re, i, 0); - gammaIm.set(im, i, 0); - re += ltilde.get(i, 0) * T.get(0, i); - im += ltilde.get(i, 0) * T.get(1, i); - } - - return { - "re": gammaRe, - "im": gammaIm - }; - } - - /** - * Harmonically extends Dirichlet boundary data. - * @private - * @method module:Projects.BoundaryFirstFlattening#extendHarmonic - * @param {module:LinearAlgebra.DenseMatrix} g The Dirichlet boundary data. - * @return {module:LinearAlgebra.DenseMatrix} - */ - extendHarmonic(g) { - let llt = this.Aii.chol(); - let a = llt.solvePositiveDefinite(this.Aib.timesDense(g).negated()); - - return a.vcat(g); - } - - /** - * Extends a boundary curve holomorphically or harmonically to the interior. - * @private - * @method module:Projects.BoundaryFirstFlattening#extendCurve - * @param {Object} gamma A dictionary mapping each boundary vertex of the input mesh to planar coordinates. - * @param {module:LinearAlgebra.DenseMatrix} gamma.re The real/x component of the planar coordinates. - * @param {module:LinearAlgebra.DenseMatrix} gamma.im The imaginary/y component of the planar coordinates. - * @param {boolean} extendHolomorphically A flag indicating whether the interior of - * the flattened domain should be extended holomorphically or harmonically. - * @returns {Object} A dictionary mapping each vertex to a vector of planar coordinates. - */ - extendCurve(gamma, extendHolomorphically) { - // harmonically extend the real component of gamma - let a = this.extendHarmonic(gamma["re"]); - - let b; - if (extendHolomorphically) { - // compute the hilbert transform of the tangential derivative of a - let h = DenseMatrix.zeros(this.nV, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.vertexIndex[he.prev.vertex]; - let j = this.vertexIndex[he.vertex]; - let k = this.vertexIndex[he.next.vertex]; - - h.set(-(a.get(k, 0) - a.get(i, 0)) / 2, j, 0); // minus sign accounts for clockwise boundary traversal - } - - // holomorphically extend the imaginary component of gamma - let llt = this.A.chol(); - b = llt.solvePositiveDefinite(h); - - } else { - // harmonically extend the imaginary component of gamma - b = this.extendHarmonic(gamma["im"]); - } - - return { - "re": a, - "im": b - }; - } - - /** - * Given the target boundary scale factors and the curvatures, flattens the - * input surface mesh with a single boundary conformally. - * @private - * @method module:Projects.BoundaryFirstFlattening#flattenWithScaleFactorsAndCurvatures - * @param {module:LinearAlgebra.DenseMatrix} u The target boundary scale factors. - * @param {module:LinearAlgebra.DenseMatrix} ktilde The target boundary curvatures. - * @param {boolean} extendHolomorphically A flag indicating whether the interior of - * the flattened domain should be extended holomorphically or harmonically. - * @param {boolean} rescale A flag indicating whether the flattening should be scaled - * to unit radius. - * @returns {Object} A dictionary mapping each vertex to a vector of planar coordinates. - */ - flattenWithScaleFactorsAndCurvatures(u, ktilde, extendHolomorphically, rescale) { - // compute the target boundary edge lengths of the flattening - let lstar = this.computeTargetBoundaryLengths(u); - - // construct the best fit conformal boundary curve - let gamma = this.constructBestFitCurve(lstar, ktilde); - - // extend the curve holomorphically or harmonically to the interior - let extension = this.extendCurve(gamma, extendHolomorphically); - - // assign flattening - let flattening = {}; - for (let v of this.geometry.mesh.vertices) { - let i = this.vertexIndex[v]; - let re = extension["re"].get(i, 0); - let im = extension["im"].get(i, 0); - - flattening[v] = new Vector(-re, im); // minus sign accounts for clockwise boundary traversal - } - - // normalize flattening - normalize(flattening, this.geometry.mesh.vertices, rescale); - - return flattening; - } - - /** - * Given either the target boundary scale factors or the curvatures, flattens the - * input surface mesh with a single boundary conformally. - * @method module:Projects.BoundaryFirstFlattening#flatten - * @param {module:LinearAlgebra.DenseMatrix} target Either the target boundary scale factors - * or the curvatures. - * @param {boolean} givenScaleFactors A flag indicating whether the input data contains - * the target boundary scale factors. - * @param {boolean} rescale A flag indicating whether the flattening should be - * scaled to unit radius. Default value is true - * @returns {Object} A dictionary mapping each vertex to a vector of planar coordinates. - */ - flatten(target, givenScaleFactors, rescale = true) { - let u, ktilde; - if (givenScaleFactors) { - // given target boundary scale factors - u = target; - - // compute the normal derivative of the boundary scale factors - let h = this.dirichletToNeumann(this.K.negated(), u); - - // compute compatible target boundary curvatures - ktilde = this.k.minus(h); - - } else { - // given target boundary curvatures - ktilde = target; - - // compute the normal derivative of the boundary scale factors - let h = this.k.minus(ktilde); - - // compute compatible target boundary scale factors - u = this.neumannToDirichlet(this.K.negated(), h); - } - - // flatten with target boundary scale factors and curvatures - return this.flattenWithScaleFactorsAndCurvatures(u, ktilde, givenScaleFactors, rescale); - } - - /** - * Flattens the input surface mesh with a single boundary conformally to a disk. - * @method module:Projects.BoundaryFirstFlattening#flattenToDisk - * @return {Object} A dictionary mapping each vertex to a vector of planar coordinates. - */ - flattenToDisk() { - let flattening = this.geometry.positions; - for (let iter = 0; iter < 10; iter++) { - // compute dual boundary edge lengths of the previous flattening - let ldual = this.computeDualBoundaryLengths(flattening); - let L = ldual.sum(); - - // set ktilde proportional to the most recent dual boundary edge lengths - let ktilde = DenseMatrix.zeros(this.nB, 1); - for (let he of this.boundary.adjacentHalfedges()) { - let i = this.bVertexIndex[he.vertex]; - - ktilde.set(2 * Math.PI * ldual.get(i, 0) / L, i, 0); - } - - // compute the normal derivative of the boundary scale factors - let h = this.k.minus(ktilde); - - // compute compatible target boundary scale factors - let u = this.neumannToDirichlet(this.K.negated(), h); - - // flatten with target boundary scale factors and curvatures - flattening = this.flattenWithScaleFactorsAndCurvatures(u, ktilde, false, true); - } - - return flattening; - } -} - -export default BoundaryFirstFlattening; \ No newline at end of file diff --git a/node/projects/parameterization/spectral-conformal-parameterization.js b/node/projects/parameterization/spectral-conformal-parameterization.js deleted file mode 100644 index eea87f9..0000000 --- a/node/projects/parameterization/spectral-conformal-parameterization.js +++ /dev/null @@ -1,83 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; -let Complex = LinearAlgebra.Complex; -let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; -let ComplexTriplet = LinearAlgebra.ComplexTriplet; -import Solvers from '../../utils/solvers.js'; -import { indexElements } from '../../core/mesh.js'; -import { normalize } from '../../core/geometry.js'; - -class SpectralConformalParameterization { - /** - * This class implements the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf spectral conformal parameterization} algorithm to flatten - * surface meshes with boundaries conformally. - * @constructor module:Projects.SpectralConformalParameterization - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - */ - constructor(geometry) { - this.geometry = geometry; - this.vertexIndex = indexElements(geometry.mesh.vertices); - } - - /** - * Builds the complex conformal energy matrix EC = ED - A. - * @private - * @method module:Projects.SpectralConformalParameterization#buildConformalEnergy - * @returns {module:LinearAlgebra.ComplexSparseMatrix} - */ - buildConformalEnergy() { - // build the dirichlet energy matrix - let ED = this.geometry.complexLaplaceMatrix(this.vertexIndex); - ED.scaleBy(new Complex(0.5)); - - // build the area term - let ii = new Complex(0, 1); - let T = new ComplexTriplet(ED.nRows(), ED.nCols()); - for (let b of this.geometry.mesh.boundaries) { - for (let h of b.adjacentHalfedges()) { - let i = this.vertexIndex[h.vertex]; - let j = this.vertexIndex[h.twin.vertex]; - - T.addEntry(ii.timesReal(0.25), i, j); - T.addEntry(ii.timesReal(-0.25), j, i); - } - } - - let A = ComplexSparseMatrix.fromTriplet(T); - - return ED.minus(A); - } - - /** - * Flattens the input surface mesh with 1 or more boundaries conformally. - * @method module:Projects.SpectralConformalParameterization#flatten - * @returns {Object} A dictionary mapping each vertex to a vector of planar coordinates. - */ - flatten() { - let vertices = this.geometry.mesh.vertices; - let flattening = {}; - - // build the conformal energy matrix - let EC = this.buildConformalEnergy(); - - // find the eigenvector corresponding to the smallest eigenvalue of EC - let z = Solvers.solveInversePowerMethod(EC); - - // assign flattening - for (let v of vertices) { - let i = this.vertexIndex[v]; - let zi = z.get(i, 0); - - flattening[v] = new Vector(zi.re, zi.im); - } - - // normalize flattening - normalize(flattening, vertices); - - return flattening; - } -} - -export default SpectralConformalParameterization; \ No newline at end of file diff --git a/node/projects/poisson-problem/scalar-poisson-problem.js b/node/projects/poisson-problem/scalar-poisson-problem.js deleted file mode 100644 index 51b6087..0000000 --- a/node/projects/poisson-problem/scalar-poisson-problem.js +++ /dev/null @@ -1,50 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let DenseMatrix = LinearAlgebra.DenseMatrix; -import { indexElements } from '../../core/mesh.js'; - -/** - * @module Projects - */ -class ScalarPoissonProblem { - /** - * This class solves a {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf scalar poisson problem} on a surface mesh. - * @constructor module:Projects.ScalarPoissonProblem - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} vertexIndex A dictionary mapping each vertex of the input mesh to a unique index. - * @property {module:LinearAlgebra.SparseMatrix} A The laplace matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} M The mass matrix of the input mesh. - * @property {number} totalArea The total surface area of the input mesh. - */ - constructor(geometry) { - // index vertices - this.vertexIndex = indexElements(geometry.mesh.vertices); - - // build laplace and mass matrices - this.A = geometry.laplaceMatrix(this.vertexIndex); - this.M = geometry.massMatrix(this.vertexIndex); - this.totalArea = geometry.totalArea(); - } - - /** - * Computes the solution of the poisson problem Ax = -M(rho - rhoBar), where A - * is the positive definite laplace matrix and M is the mass matrix. - * @method module:Projects.ScalarPoissonProblem#solve - * @param {module:LinearAlgebra.DenseMatrix} rho A scalar density of vertices of the input mesh. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - solve(rho) { - // construct right hand side - let V = this.M.nRows(); - let totalRho = this.M.timesDense(rho).sum(); - let rhoBar = DenseMatrix.ones(V, 1).timesReal(totalRho / this.totalArea); - let rhs = this.M.timesDense(rhoBar.minus(rho)); - - // solve linear system - let llt = this.A.chol(); - let phi = llt.solvePositiveDefinite(rhs); - - return phi; - } -} - -export default ScalarPoissonProblem; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/harmonic-bases.js b/node/projects/vector-field-decomposition/harmonic-bases.js deleted file mode 100644 index ca87644..0000000 --- a/node/projects/vector-field-decomposition/harmonic-bases.js +++ /dev/null @@ -1,72 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let DenseMatrix = LinearAlgebra.DenseMatrix; -import { indexElements } from '../../core/mesh.js'; - -class HarmonicBases { - /** - * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf harmonic bases} of a surface mesh. - * @constructor module:Projects.HarmonicBases - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - */ - constructor(geometry) { - this.geometry = geometry; - } - - /** - * Builds a closed, but not exact, primal 1-form ω. - * @private - * @method module:Projects.HarmonicBases#buildClosedPrimalOneForm - * @param {module:Core.Halfedge[]} generator An array of halfedges representing a - * {@link https://en.wikipedia.org/wiki/Homology_(mathematics)#Surfaces homology generator} - * of the input mesh. - * @param {Object} edgeIndex A dictionary mapping each edge of the input mesh - * to a unique index. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - buildClosedPrimalOneForm(generator, edgeIndex) { - let E = this.geometry.mesh.edges.length; - let omega = DenseMatrix.zeros(E, 1); - for (let h of generator) { - let i = edgeIndex[h.edge]; - let sign = h.edge.halfedge === h ? 1 : -1; - - omega.set(sign, i, 0); - } - - return omega; - } - - /** - * Computes the harmonic bases [γ1, γ2 ... γn] of the input mesh. - * @method module:Projects.HarmonicBases#compute - * @param {module:Projects.HodgeDecomposition} hodgeDecomposition A hodge decomposition object that - * can be used to compute the exact component of the closed, but not exact, primal - * 1-form ω. - * @returns {module:LinearAlgebra.DenseMatrix[]} - */ - compute(hodgeDecomposition) { - let gammas = []; - let generators = this.geometry.mesh.generators; - - if (generators.length > 0) { - // index edges - let edgeIndex = indexElements(this.geometry.mesh.edges); - - // build bases with generators - for (let generator of generators) { - // build closed primal one form - let omega = this.buildClosedPrimalOneForm(generator, edgeIndex); - - // compute exact component dα - let dAlpha = hodgeDecomposition.computeExactComponent(omega); - - // extract harmonic component - gammas.push(omega.minus(dAlpha)); - } - } - - return gammas; - } -} - -export default HarmonicBases; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/hodge-decomposition.js b/node/projects/vector-field-decomposition/hodge-decomposition.js deleted file mode 100644 index bc077ee..0000000 --- a/node/projects/vector-field-decomposition/hodge-decomposition.js +++ /dev/null @@ -1,97 +0,0 @@ -import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; -let SparseMatrix = LinearAlgebra.SparseMatrix; -import DEC from '../../core/discrete-exterior-calculus.js'; -import { indexElements } from '../../core/mesh.js'; - -class HodgeDecomposition { - /** - * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf hodge decomposition} of a vector field on a surface mesh. - * @constructor module:Projects.HodgeDecomposition - * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. - * @property {Object} edgeIndex A dictionary mapping each edge of the input mesh to a unique index. - * @property {module:LinearAlgebra.SparseMatrix} hodge1 The hodge star 1-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} hodge2 The hodge star 2-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} d0 The exterior derivaitve 0-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} d1 The exterior derivaitve 1-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} hodge1Inv The inverse hodge star 1-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} hodge2Inv The inverse hodge star 2-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} d0T Transpose of the exterior derivaitve 0-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} d1T Transpose of the exterior derivaitve 1-form matrix of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} A The 0-form laplace matrix d0^T star1 d0 of the input mesh. - * @property {module:LinearAlgebra.SparseMatrix} B The 2-form matrix d1 star1^-1 d1^T of the input mesh. - */ - constructor(geometry) { - // index vertices, edges and faces - let vertexIndex = indexElements(geometry.mesh.vertices); - this.edgeIndex = indexElements(geometry.mesh.edges); - let faceIndex = indexElements(geometry.mesh.faces); - - // compute DEC operators - this.hodge1 = DEC.buildHodgeStar1Form(geometry, this.edgeIndex); - this.hodge2 = DEC.buildHodgeStar2Form(geometry, faceIndex); - this.d0 = DEC.buildExteriorDerivative0Form(geometry, this.edgeIndex, vertexIndex); - this.d1 = DEC.buildExteriorDerivative1Form(geometry, faceIndex, this.edgeIndex); - - this.hodge1Inv = this.hodge1.invertDiagonal(); - this.hodge2Inv = this.hodge2.invertDiagonal(); - this.d0T = this.d0.transpose(); - this.d1T = this.d1.transpose(); - - // construct 0-form laplace matrix - // shift the matrix by a small constant (1e-8) to make it positive definite - let V = geometry.mesh.vertices.length; - this.A = this.d0T.timesSparse(this.hodge1.timesSparse(this.d0)); - this.A.incrementBy(SparseMatrix.identity(V, V).timesReal(1e-8)); - - // construct two form matrix - this.B = this.d1.timesSparse(this.hodge1Inv.timesSparse(this.d1T)); - } - - /** - * Computes the 0-form potential α by solving the system 𝛿dα = 𝛿ω. - * @method module:Projects.HodgeDecomposition#computeExactComponent - * @param {module:LinearAlgebra.DenseMatrix} omega A 1-form on the edges of the input mesh. - * @returns {module:LinearAlgebra.DenseMatrix} The exact component dα of ω. - */ - computeExactComponent(omega) { - // construct right hand side - let rhs = this.d0T.timesDense(this.hodge1.timesDense(omega)); - - // solve linear system - let llt = this.A.chol(); - let alpha = llt.solvePositiveDefinite(rhs); - - return this.d0.timesDense(alpha); - } - - /** - * Computes the 2-form potential β by solving the system d𝛿β = dω. - * @method module:Projects.HodgeDecomposition#computeCoExactComponent - * @param {module:LinearAlgebra.DenseMatrix} omega A 1-form on the edges of the input mesh. - * @returns {module:LinearAlgebra.DenseMatrix} The coexact component 𝛿β of ω. - */ - computeCoExactComponent(omega) { - // construct right hand side - let rhs = this.d1.timesDense(omega); - - // solve linear system - let lu = this.B.lu(); - let betaTilde = lu.solveSquare(rhs); - - return this.hodge1Inv.timesDense(this.d1T.timesDense(betaTilde)); - } - - /** - * Computes the harmonic component γ = ω - dα - 𝛿β of ω. - * @method module:Projects.HodgeDecomposition#computeHarmonicComponent - * @param {module:LinearAlgebra.DenseMatrix} omega A 1-form on the edges of the input mesh. - * @param {module:LinearAlgebra.DenseMatrix} dAlpha The exact component of ω. - * @param {module:LinearAlgebra.DenseMatrix} deltaBeta The coexact component of ω. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - computeHarmonicComponent(omega, dAlpha, deltaBeta) { - return omega.minus(dAlpha.plus(deltaBeta)); - } -} - -export default HodgeDecomposition; \ No newline at end of file diff --git a/node/projects/vector-field-decomposition/tree-cotree.js b/node/projects/vector-field-decomposition/tree-cotree.js deleted file mode 100644 index c35fbe8..0000000 --- a/node/projects/vector-field-decomposition/tree-cotree.js +++ /dev/null @@ -1,172 +0,0 @@ -class TreeCotree { - /** - * This class computes the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf tree cotree} decomposition of a surface mesh - * to build its {@link https://en.wikipedia.org/wiki/Homology_(mathematics)#Surfaces homology generators}. - * @constructor module:Projects.TreeCotree - * @param {module:Core.Mesh} mesh The input mesh this class acts on. - * @property {module:Core.Mesh} mesh The input mesh this class acts on. - * @property {vertexParent} vertexParent A dictionary mapping each vertex of the input mesh to - * its parent in the primal spanning tree. - * @property {faceParent} faceParent A dictionary mapping each face of the input mesh to - * its parent in the dual spanning tree. - */ - constructor(mesh) { - this.mesh = mesh; - this.vertexParent = {}; - this.faceParent = {}; - } - - /** - * Builds a primal spanning tree on a boundaryless mesh. - * @private - * @method module:Projects.TreeCotree#buildPrimalSpanningTree - */ - buildPrimalSpanningTree() { - // mark each vertex as its own parent - for (let v of this.mesh.vertices) { - this.vertexParent[v] = v; - } - - // build spanning tree - let root = this.mesh.vertices[0]; - let queue = [root]; - while (queue.length !== 0) { - let u = queue.shift(); - - for (let v of u.adjacentVertices()) { - if (this.vertexParent[v] === v && v !== root) { - this.vertexParent[v] = u; - queue.push(v); - } - } - } - } - - /** - * Checks whether a halfedge is in the primal spanning tree. - * @private - * @method module:Projects.TreeCotree#inPrimalSpanningTree - * @param {module:Core.Halfedge} h A halfedge on the input mesh. - * @returns {boolean} - */ - inPrimalSpanningTree(h) { - let u = h.vertex; - let v = h.twin.vertex; - - return this.vertexParent[u] === v || this.vertexParent[v] === u; - } - - /** - * Builds a dual spanning tree on a boundaryless mesh. - * @private - * @method module:Projects.TreeCotree#buildDualSpanningCotree - */ - buildDualSpanningCotree() { - // mark each face as its own parent - for (let f of this.mesh.faces) { - this.faceParent[f] = f; - } - - // build dual spanning tree - let root = this.mesh.faces[0]; - let queue = [root]; - while (queue.length !== 0) { - let f = queue.shift(); - - for (let h of f.adjacentHalfedges()) { - if (!this.inPrimalSpanningTree(h)) { - let g = h.twin.face; - - if (this.faceParent[g] === g && g !== root) { - this.faceParent[g] = f; - queue.push(g); - } - } - } - } - } - - /** - * Checks whether a halfedge is in the dual spanning tree. - * @private - * @method module:Projects.TreeCotree#inDualSpanningTree - * @param {module:Core.Halfedge} h A halfedge on the input mesh. - * @returns {boolean} - */ - inDualSpanningTree(h) { - let f = h.face; - let g = h.twin.face; - - return this.faceParent[f] === g || this.faceParent[g] === f; - } - - /** - * Returns a halfedge lying on the shared edge between face f and g. - * @private - * @method module:Projects.TreeCotree#sharedHalfedge - * @param {module:Core.Face} f A face on the input mesh. - * @param {module:Core.Face} g A neighboring face to f on the input mesh. - * @returns {module:Core.Halfedge} - */ - sharedHalfedge(f, g) { - for (let h of f.adjacentHalfedges()) { - if (h.twin.face === g) { - return h; - } - } - - alert("Line 120, sharedHalfedge, tree-cotree.js: Code should not reach here!"); - return new Halfedge(); - } - - /** - * Computes the {@link https://en.wikipedia.org/wiki/Homology_(mathematics)#Surfaces homology generators} of the input mesh and stores them - * in the {@link module:Core.Mesh Mesh}'s generators property. - * @method module:Projects.TreeCotree#buildGenerators - */ - buildGenerators() { - // build spanning trees - this.buildPrimalSpanningTree(); - this.buildDualSpanningCotree(); - - // collect dual edges that are neither in primal spanning tree nor in dual spanning cotree - for (let e of this.mesh.edges) { - let h = e.halfedge; - - if (!this.inPrimalSpanningTree(h) && !this.inDualSpanningTree(h)) { - // trace faces back to root - let tempGenerator1 = []; - let f = h.face; - while (this.faceParent[f] !== f) { - let parent = this.faceParent[f]; - tempGenerator1.push(this.sharedHalfedge(f, parent)); - f = parent; - } - - let tempGenerator2 = []; - f = h.twin.face; - while (this.faceParent[f] !== f) { - let parent = this.faceParent[f]; - tempGenerator2.push(this.sharedHalfedge(f, parent)); - f = parent; - } - - // remove common halfedges - let m = tempGenerator1.length - 1; - let n = tempGenerator2.length - 1; - while (tempGenerator1[m] === tempGenerator2[n]) { - m--; - n--; - } - - let generator = [h]; - for (let i = 0; i <= m; i++) generator.push(tempGenerator1[i].twin); - for (let i = n; i >= 0; i--) generator.push(tempGenerator2[i]); - - this.mesh.generators.push(generator); - } - } - } -} - -export default TreeCotree; \ No newline at end of file diff --git a/node/utils/colormap.js b/node/utils/colormap.js deleted file mode 100644 index c0cf189..0000000 --- a/node/utils/colormap.js +++ /dev/null @@ -1,1575 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; - -let seismic = [ - [0.000, [0.000, 0.000, 0.300]], - [0.002, [0.000, 0.000, 0.300]], - [0.004, [0.000, 0.000, 0.311]], - [0.006, [0.000, 0.000, 0.311]], - [0.008, [0.000, 0.000, 0.322]], - [0.010, [0.000, 0.000, 0.322]], - [0.012, [0.000, 0.000, 0.333]], - [0.014, [0.000, 0.000, 0.333]], - [0.016, [0.000, 0.000, 0.344]], - [0.018, [0.000, 0.000, 0.344]], - [0.020, [0.000, 0.000, 0.355]], - [0.022, [0.000, 0.000, 0.355]], - [0.023, [0.000, 0.000, 0.366]], - [0.025, [0.000, 0.000, 0.366]], - [0.027, [0.000, 0.000, 0.377]], - [0.029, [0.000, 0.000, 0.377]], - [0.031, [0.000, 0.000, 0.388]], - [0.033, [0.000, 0.000, 0.388]], - [0.035, [0.000, 0.000, 0.399]], - [0.037, [0.000, 0.000, 0.399]], - [0.039, [0.000, 0.000, 0.410]], - [0.041, [0.000, 0.000, 0.410]], - [0.043, [0.000, 0.000, 0.421]], - [0.045, [0.000, 0.000, 0.421]], - [0.047, [0.000, 0.000, 0.432]], - [0.049, [0.000, 0.000, 0.432]], - [0.051, [0.000, 0.000, 0.443]], - [0.053, [0.000, 0.000, 0.443]], - [0.055, [0.000, 0.000, 0.454]], - [0.057, [0.000, 0.000, 0.454]], - [0.059, [0.000, 0.000, 0.465]], - [0.061, [0.000, 0.000, 0.465]], - [0.063, [0.000, 0.000, 0.476]], - [0.065, [0.000, 0.000, 0.476]], - [0.067, [0.000, 0.000, 0.487]], - [0.068, [0.000, 0.000, 0.487]], - [0.070, [0.000, 0.000, 0.498]], - [0.072, [0.000, 0.000, 0.498]], - [0.074, [0.000, 0.000, 0.509]], - [0.076, [0.000, 0.000, 0.509]], - [0.078, [0.000, 0.000, 0.520]], - [0.080, [0.000, 0.000, 0.520]], - [0.082, [0.000, 0.000, 0.531]], - [0.084, [0.000, 0.000, 0.531]], - [0.086, [0.000, 0.000, 0.542]], - [0.088, [0.000, 0.000, 0.542]], - [0.090, [0.000, 0.000, 0.553]], - [0.092, [0.000, 0.000, 0.553]], - [0.094, [0.000, 0.000, 0.564]], - [0.096, [0.000, 0.000, 0.564]], - [0.098, [0.000, 0.000, 0.575]], - [0.100, [0.000, 0.000, 0.575]], - [0.102, [0.000, 0.000, 0.585]], - [0.104, [0.000, 0.000, 0.585]], - [0.106, [0.000, 0.000, 0.596]], - [0.108, [0.000, 0.000, 0.596]], - [0.110, [0.000, 0.000, 0.607]], - [0.112, [0.000, 0.000, 0.607]], - [0.114, [0.000, 0.000, 0.618]], - [0.115, [0.000, 0.000, 0.618]], - [0.117, [0.000, 0.000, 0.629]], - [0.119, [0.000, 0.000, 0.629]], - [0.121, [0.000, 0.000, 0.640]], - [0.123, [0.000, 0.000, 0.640]], - [0.125, [0.000, 0.000, 0.651]], - [0.127, [0.000, 0.000, 0.651]], - [0.129, [0.000, 0.000, 0.662]], - [0.131, [0.000, 0.000, 0.662]], - [0.133, [0.000, 0.000, 0.673]], - [0.135, [0.000, 0.000, 0.673]], - [0.137, [0.000, 0.000, 0.684]], - [0.139, [0.000, 0.000, 0.684]], - [0.141, [0.000, 0.000, 0.695]], - [0.143, [0.000, 0.000, 0.695]], - [0.145, [0.000, 0.000, 0.706]], - [0.147, [0.000, 0.000, 0.706]], - [0.149, [0.000, 0.000, 0.717]], - [0.151, [0.000, 0.000, 0.717]], - [0.153, [0.000, 0.000, 0.728]], - [0.155, [0.000, 0.000, 0.728]], - [0.157, [0.000, 0.000, 0.739]], - [0.159, [0.000, 0.000, 0.739]], - [0.160, [0.000, 0.000, 0.750]], - [0.162, [0.000, 0.000, 0.750]], - [0.164, [0.000, 0.000, 0.761]], - [0.166, [0.000, 0.000, 0.761]], - [0.168, [0.000, 0.000, 0.772]], - [0.170, [0.000, 0.000, 0.772]], - [0.172, [0.000, 0.000, 0.783]], - [0.174, [0.000, 0.000, 0.783]], - [0.176, [0.000, 0.000, 0.794]], - [0.178, [0.000, 0.000, 0.794]], - [0.180, [0.000, 0.000, 0.805]], - [0.182, [0.000, 0.000, 0.805]], - [0.184, [0.000, 0.000, 0.816]], - [0.186, [0.000, 0.000, 0.816]], - [0.188, [0.000, 0.000, 0.827]], - [0.190, [0.000, 0.000, 0.827]], - [0.192, [0.000, 0.000, 0.838]], - [0.194, [0.000, 0.000, 0.838]], - [0.196, [0.000, 0.000, 0.849]], - [0.198, [0.000, 0.000, 0.849]], - [0.200, [0.000, 0.000, 0.860]], - [0.202, [0.000, 0.000, 0.860]], - [0.204, [0.000, 0.000, 0.871]], - [0.205, [0.000, 0.000, 0.871]], - [0.207, [0.000, 0.000, 0.882]], - [0.209, [0.000, 0.000, 0.882]], - [0.211, [0.000, 0.000, 0.893]], - [0.213, [0.000, 0.000, 0.893]], - [0.215, [0.000, 0.000, 0.904]], - [0.217, [0.000, 0.000, 0.904]], - [0.219, [0.000, 0.000, 0.915]], - [0.221, [0.000, 0.000, 0.915]], - [0.223, [0.000, 0.000, 0.926]], - [0.225, [0.000, 0.000, 0.926]], - [0.227, [0.000, 0.000, 0.937]], - [0.229, [0.000, 0.000, 0.937]], - [0.231, [0.000, 0.000, 0.948]], - [0.233, [0.000, 0.000, 0.948]], - [0.235, [0.000, 0.000, 0.959]], - [0.237, [0.000, 0.000, 0.959]], - [0.239, [0.000, 0.000, 0.970]], - [0.241, [0.000, 0.000, 0.970]], - [0.243, [0.000, 0.000, 0.981]], - [0.245, [0.000, 0.000, 0.981]], - [0.247, [0.000, 0.000, 0.992]], - [0.249, [0.000, 0.000, 0.992]], - [0.250, [0.004, 0.004, 1.000]], - [0.252, [0.004, 0.004, 1.000]], - [0.254, [0.020, 0.020, 1.000]], - [0.256, [0.020, 0.020, 1.000]], - [0.258, [0.035, 0.035, 1.000]], - [0.260, [0.035, 0.035, 1.000]], - [0.262, [0.051, 0.051, 1.000]], - [0.264, [0.051, 0.051, 1.000]], - [0.266, [0.067, 0.067, 1.000]], - [0.268, [0.067, 0.067, 1.000]], - [0.270, [0.082, 0.082, 1.000]], - [0.272, [0.082, 0.082, 1.000]], - [0.274, [0.098, 0.098, 1.000]], - [0.276, [0.098, 0.098, 1.000]], - [0.278, [0.114, 0.114, 1.000]], - [0.280, [0.114, 0.114, 1.000]], - [0.282, [0.129, 0.129, 1.000]], - [0.284, [0.129, 0.129, 1.000]], - [0.286, [0.145, 0.145, 1.000]], - [0.288, [0.145, 0.145, 1.000]], - [0.290, [0.161, 0.161, 1.000]], - [0.292, [0.161, 0.161, 1.000]], - [0.294, [0.176, 0.176, 1.000]], - [0.295, [0.176, 0.176, 1.000]], - [0.297, [0.192, 0.192, 1.000]], - [0.299, [0.192, 0.192, 1.000]], - [0.301, [0.208, 0.208, 1.000]], - [0.303, [0.208, 0.208, 1.000]], - [0.305, [0.224, 0.224, 1.000]], - [0.307, [0.224, 0.224, 1.000]], - [0.309, [0.239, 0.239, 1.000]], - [0.311, [0.239, 0.239, 1.000]], - [0.313, [0.255, 0.255, 1.000]], - [0.315, [0.255, 0.255, 1.000]], - [0.317, [0.271, 0.271, 1.000]], - [0.319, [0.271, 0.271, 1.000]], - [0.321, [0.286, 0.286, 1.000]], - [0.323, [0.286, 0.286, 1.000]], - [0.325, [0.302, 0.302, 1.000]], - [0.327, [0.302, 0.302, 1.000]], - [0.329, [0.318, 0.318, 1.000]], - [0.331, [0.318, 0.318, 1.000]], - [0.333, [0.333, 0.333, 1.000]], - [0.335, [0.333, 0.333, 1.000]], - [0.337, [0.349, 0.349, 1.000]], - [0.339, [0.349, 0.349, 1.000]], - [0.341, [0.365, 0.365, 1.000]], - [0.342, [0.365, 0.365, 1.000]], - [0.344, [0.380, 0.380, 1.000]], - [0.346, [0.380, 0.380, 1.000]], - [0.348, [0.396, 0.396, 1.000]], - [0.350, [0.396, 0.396, 1.000]], - [0.352, [0.412, 0.412, 1.000]], - [0.354, [0.412, 0.412, 1.000]], - [0.356, [0.427, 0.427, 1.000]], - [0.358, [0.427, 0.427, 1.000]], - [0.360, [0.443, 0.443, 1.000]], - [0.362, [0.443, 0.443, 1.000]], - [0.364, [0.459, 0.459, 1.000]], - [0.366, [0.459, 0.459, 1.000]], - [0.368, [0.475, 0.475, 1.000]], - [0.370, [0.475, 0.475, 1.000]], - [0.372, [0.490, 0.490, 1.000]], - [0.374, [0.490, 0.490, 1.000]], - [0.376, [0.506, 0.506, 1.000]], - [0.378, [0.506, 0.506, 1.000]], - [0.380, [0.522, 0.522, 1.000]], - [0.382, [0.522, 0.522, 1.000]], - [0.384, [0.537, 0.537, 1.000]], - [0.386, [0.537, 0.537, 1.000]], - [0.387, [0.553, 0.553, 1.000]], - [0.389, [0.553, 0.553, 1.000]], - [0.391, [0.569, 0.569, 1.000]], - [0.393, [0.569, 0.569, 1.000]], - [0.395, [0.584, 0.584, 1.000]], - [0.397, [0.584, 0.584, 1.000]], - [0.399, [0.600, 0.600, 1.000]], - [0.401, [0.600, 0.600, 1.000]], - [0.403, [0.616, 0.616, 1.000]], - [0.405, [0.616, 0.616, 1.000]], - [0.407, [0.631, 0.631, 1.000]], - [0.409, [0.631, 0.631, 1.000]], - [0.411, [0.647, 0.647, 1.000]], - [0.413, [0.647, 0.647, 1.000]], - [0.415, [0.663, 0.663, 1.000]], - [0.417, [0.663, 0.663, 1.000]], - [0.419, [0.678, 0.678, 1.000]], - [0.421, [0.678, 0.678, 1.000]], - [0.423, [0.694, 0.694, 1.000]], - [0.425, [0.694, 0.694, 1.000]], - [0.427, [0.710, 0.710, 1.000]], - [0.429, [0.710, 0.710, 1.000]], - [0.431, [0.725, 0.725, 1.000]], - [0.432, [0.725, 0.725, 1.000]], - [0.434, [0.741, 0.741, 1.000]], - [0.436, [0.741, 0.741, 1.000]], - [0.438, [0.757, 0.757, 1.000]], - [0.440, [0.757, 0.757, 1.000]], - [0.442, [0.773, 0.773, 1.000]], - [0.444, [0.773, 0.773, 1.000]], - [0.446, [0.788, 0.788, 1.000]], - [0.448, [0.788, 0.788, 1.000]], - [0.450, [0.804, 0.804, 1.000]], - [0.452, [0.804, 0.804, 1.000]], - [0.454, [0.820, 0.820, 1.000]], - [0.456, [0.820, 0.820, 1.000]], - [0.458, [0.835, 0.835, 1.000]], - [0.460, [0.835, 0.835, 1.000]], - [0.462, [0.851, 0.851, 1.000]], - [0.464, [0.851, 0.851, 1.000]], - [0.466, [0.867, 0.867, 1.000]], - [0.468, [0.867, 0.867, 1.000]], - [0.470, [0.882, 0.882, 1.000]], - [0.472, [0.882, 0.882, 1.000]], - [0.474, [0.898, 0.898, 1.000]], - [0.476, [0.898, 0.898, 1.000]], - [0.477, [0.914, 0.914, 1.000]], - [0.479, [0.914, 0.914, 1.000]], - [0.481, [0.929, 0.929, 1.000]], - [0.483, [0.929, 0.929, 1.000]], - [0.485, [0.945, 0.945, 1.000]], - [0.487, [0.945, 0.945, 1.000]], - [0.489, [0.961, 0.961, 1.000]], - [0.491, [0.961, 0.961, 1.000]], - [0.493, [0.976, 0.976, 1.000]], - [0.495, [0.976, 0.976, 1.000]], - [0.497, [0.992, 0.992, 1.000]], - [0.499, [0.992, 0.992, 1.000]], - [0.501, [1.000, 0.992, 0.992]], - [0.503, [1.000, 0.992, 0.992]], - [0.505, [1.000, 0.976, 0.976]], - [0.507, [1.000, 0.976, 0.976]], - [0.509, [1.000, 0.961, 0.961]], - [0.511, [1.000, 0.961, 0.961]], - [0.513, [1.000, 0.945, 0.945]], - [0.515, [1.000, 0.945, 0.945]], - [0.517, [1.000, 0.929, 0.929]], - [0.519, [1.000, 0.929, 0.929]], - [0.521, [1.000, 0.914, 0.914]], - [0.523, [1.000, 0.914, 0.914]], - [0.524, [1.000, 0.898, 0.898]], - [0.526, [1.000, 0.898, 0.898]], - [0.528, [1.000, 0.882, 0.882]], - [0.530, [1.000, 0.882, 0.882]], - [0.532, [1.000, 0.867, 0.867]], - [0.534, [1.000, 0.867, 0.867]], - [0.536, [1.000, 0.851, 0.851]], - [0.538, [1.000, 0.851, 0.851]], - [0.540, [1.000, 0.835, 0.835]], - [0.542, [1.000, 0.835, 0.835]], - [0.544, [1.000, 0.820, 0.820]], - [0.546, [1.000, 0.820, 0.820]], - [0.548, [1.000, 0.804, 0.804]], - [0.550, [1.000, 0.804, 0.804]], - [0.552, [1.000, 0.788, 0.788]], - [0.554, [1.000, 0.788, 0.788]], - [0.556, [1.000, 0.773, 0.773]], - [0.558, [1.000, 0.773, 0.773]], - [0.560, [1.000, 0.757, 0.757]], - [0.562, [1.000, 0.757, 0.757]], - [0.564, [1.000, 0.741, 0.741]], - [0.566, [1.000, 0.741, 0.741]], - [0.568, [1.000, 0.725, 0.725]], - [0.569, [1.000, 0.725, 0.725]], - [0.571, [1.000, 0.710, 0.710]], - [0.573, [1.000, 0.710, 0.710]], - [0.575, [1.000, 0.694, 0.694]], - [0.577, [1.000, 0.694, 0.694]], - [0.579, [1.000, 0.678, 0.678]], - [0.581, [1.000, 0.678, 0.678]], - [0.583, [1.000, 0.663, 0.663]], - [0.585, [1.000, 0.663, 0.663]], - [0.587, [1.000, 0.647, 0.647]], - [0.589, [1.000, 0.647, 0.647]], - [0.591, [1.000, 0.631, 0.631]], - [0.593, [1.000, 0.631, 0.631]], - [0.595, [1.000, 0.616, 0.616]], - [0.597, [1.000, 0.616, 0.616]], - [0.599, [1.000, 0.600, 0.600]], - [0.601, [1.000, 0.600, 0.600]], - [0.603, [1.000, 0.584, 0.584]], - [0.605, [1.000, 0.584, 0.584]], - [0.607, [1.000, 0.569, 0.569]], - [0.609, [1.000, 0.569, 0.569]], - [0.611, [1.000, 0.553, 0.553]], - [0.613, [1.000, 0.553, 0.553]], - [0.614, [1.000, 0.537, 0.537]], - [0.616, [1.000, 0.537, 0.537]], - [0.618, [1.000, 0.522, 0.522]], - [0.620, [1.000, 0.522, 0.522]], - [0.622, [1.000, 0.506, 0.506]], - [0.624, [1.000, 0.506, 0.506]], - [0.626, [1.000, 0.490, 0.490]], - [0.628, [1.000, 0.490, 0.490]], - [0.630, [1.000, 0.475, 0.475]], - [0.632, [1.000, 0.475, 0.475]], - [0.634, [1.000, 0.459, 0.459]], - [0.636, [1.000, 0.459, 0.459]], - [0.638, [1.000, 0.443, 0.443]], - [0.640, [1.000, 0.443, 0.443]], - [0.642, [1.000, 0.427, 0.427]], - [0.644, [1.000, 0.427, 0.427]], - [0.646, [1.000, 0.412, 0.412]], - [0.648, [1.000, 0.412, 0.412]], - [0.650, [1.000, 0.396, 0.396]], - [0.652, [1.000, 0.396, 0.396]], - [0.654, [1.000, 0.380, 0.380]], - [0.656, [1.000, 0.380, 0.380]], - [0.658, [1.000, 0.365, 0.365]], - [0.659, [1.000, 0.365, 0.365]], - [0.661, [1.000, 0.349, 0.349]], - [0.663, [1.000, 0.349, 0.349]], - [0.665, [1.000, 0.333, 0.333]], - [0.667, [1.000, 0.333, 0.333]], - [0.669, [1.000, 0.318, 0.318]], - [0.671, [1.000, 0.318, 0.318]], - [0.673, [1.000, 0.302, 0.302]], - [0.675, [1.000, 0.302, 0.302]], - [0.677, [1.000, 0.286, 0.286]], - [0.679, [1.000, 0.286, 0.286]], - [0.681, [1.000, 0.271, 0.271]], - [0.683, [1.000, 0.271, 0.271]], - [0.685, [1.000, 0.255, 0.255]], - [0.687, [1.000, 0.255, 0.255]], - [0.689, [1.000, 0.239, 0.239]], - [0.691, [1.000, 0.239, 0.239]], - [0.693, [1.000, 0.224, 0.224]], - [0.695, [1.000, 0.224, 0.224]], - [0.697, [1.000, 0.208, 0.208]], - [0.699, [1.000, 0.208, 0.208]], - [0.701, [1.000, 0.192, 0.192]], - [0.703, [1.000, 0.192, 0.192]], - [0.705, [1.000, 0.176, 0.176]], - [0.706, [1.000, 0.176, 0.176]], - [0.708, [1.000, 0.161, 0.161]], - [0.710, [1.000, 0.161, 0.161]], - [0.712, [1.000, 0.145, 0.145]], - [0.714, [1.000, 0.145, 0.145]], - [0.716, [1.000, 0.129, 0.129]], - [0.718, [1.000, 0.129, 0.129]], - [0.720, [1.000, 0.114, 0.114]], - [0.722, [1.000, 0.114, 0.114]], - [0.724, [1.000, 0.098, 0.098]], - [0.726, [1.000, 0.098, 0.098]], - [0.728, [1.000, 0.082, 0.082]], - [0.730, [1.000, 0.082, 0.082]], - [0.732, [1.000, 0.067, 0.067]], - [0.734, [1.000, 0.067, 0.067]], - [0.736, [1.000, 0.051, 0.051]], - [0.738, [1.000, 0.051, 0.051]], - [0.740, [1.000, 0.035, 0.035]], - [0.742, [1.000, 0.035, 0.035]], - [0.744, [1.000, 0.020, 0.020]], - [0.746, [1.000, 0.020, 0.020]], - [0.748, [1.000, 0.004, 0.004]], - [0.750, [1.000, 0.004, 0.004]], - [0.751, [0.994, 0.000, 0.000]], - [0.753, [0.994, 0.000, 0.000]], - [0.755, [0.986, 0.000, 0.000]], - [0.757, [0.986, 0.000, 0.000]], - [0.759, [0.978, 0.000, 0.000]], - [0.761, [0.978, 0.000, 0.000]], - [0.763, [0.971, 0.000, 0.000]], - [0.765, [0.971, 0.000, 0.000]], - [0.767, [0.963, 0.000, 0.000]], - [0.769, [0.963, 0.000, 0.000]], - [0.771, [0.955, 0.000, 0.000]], - [0.773, [0.955, 0.000, 0.000]], - [0.775, [0.947, 0.000, 0.000]], - [0.777, [0.947, 0.000, 0.000]], - [0.779, [0.939, 0.000, 0.000]], - [0.781, [0.939, 0.000, 0.000]], - [0.783, [0.931, 0.000, 0.000]], - [0.785, [0.931, 0.000, 0.000]], - [0.787, [0.924, 0.000, 0.000]], - [0.789, [0.924, 0.000, 0.000]], - [0.791, [0.916, 0.000, 0.000]], - [0.793, [0.916, 0.000, 0.000]], - [0.795, [0.908, 0.000, 0.000]], - [0.796, [0.908, 0.000, 0.000]], - [0.798, [0.900, 0.000, 0.000]], - [0.800, [0.900, 0.000, 0.000]], - [0.802, [0.892, 0.000, 0.000]], - [0.804, [0.892, 0.000, 0.000]], - [0.806, [0.884, 0.000, 0.000]], - [0.808, [0.884, 0.000, 0.000]], - [0.810, [0.876, 0.000, 0.000]], - [0.812, [0.876, 0.000, 0.000]], - [0.814, [0.869, 0.000, 0.000]], - [0.816, [0.869, 0.000, 0.000]], - [0.818, [0.861, 0.000, 0.000]], - [0.820, [0.861, 0.000, 0.000]], - [0.822, [0.853, 0.000, 0.000]], - [0.824, [0.853, 0.000, 0.000]], - [0.826, [0.845, 0.000, 0.000]], - [0.828, [0.845, 0.000, 0.000]], - [0.830, [0.837, 0.000, 0.000]], - [0.832, [0.837, 0.000, 0.000]], - [0.834, [0.829, 0.000, 0.000]], - [0.836, [0.829, 0.000, 0.000]], - [0.838, [0.822, 0.000, 0.000]], - [0.840, [0.822, 0.000, 0.000]], - [0.841, [0.814, 0.000, 0.000]], - [0.843, [0.814, 0.000, 0.000]], - [0.845, [0.806, 0.000, 0.000]], - [0.847, [0.806, 0.000, 0.000]], - [0.849, [0.798, 0.000, 0.000]], - [0.851, [0.798, 0.000, 0.000]], - [0.853, [0.790, 0.000, 0.000]], - [0.855, [0.790, 0.000, 0.000]], - [0.857, [0.782, 0.000, 0.000]], - [0.859, [0.782, 0.000, 0.000]], - [0.861, [0.775, 0.000, 0.000]], - [0.863, [0.775, 0.000, 0.000]], - [0.865, [0.767, 0.000, 0.000]], - [0.867, [0.767, 0.000, 0.000]], - [0.869, [0.759, 0.000, 0.000]], - [0.871, [0.759, 0.000, 0.000]], - [0.873, [0.751, 0.000, 0.000]], - [0.875, [0.751, 0.000, 0.000]], - [0.877, [0.743, 0.000, 0.000]], - [0.879, [0.743, 0.000, 0.000]], - [0.881, [0.735, 0.000, 0.000]], - [0.883, [0.735, 0.000, 0.000]], - [0.885, [0.727, 0.000, 0.000]], - [0.886, [0.727, 0.000, 0.000]], - [0.888, [0.720, 0.000, 0.000]], - [0.890, [0.720, 0.000, 0.000]], - [0.892, [0.712, 0.000, 0.000]], - [0.894, [0.712, 0.000, 0.000]], - [0.896, [0.704, 0.000, 0.000]], - [0.898, [0.704, 0.000, 0.000]], - [0.900, [0.696, 0.000, 0.000]], - [0.902, [0.696, 0.000, 0.000]], - [0.904, [0.688, 0.000, 0.000]], - [0.906, [0.688, 0.000, 0.000]], - [0.908, [0.680, 0.000, 0.000]], - [0.910, [0.680, 0.000, 0.000]], - [0.912, [0.673, 0.000, 0.000]], - [0.914, [0.673, 0.000, 0.000]], - [0.916, [0.665, 0.000, 0.000]], - [0.918, [0.665, 0.000, 0.000]], - [0.920, [0.657, 0.000, 0.000]], - [0.922, [0.657, 0.000, 0.000]], - [0.924, [0.649, 0.000, 0.000]], - [0.926, [0.649, 0.000, 0.000]], - [0.928, [0.641, 0.000, 0.000]], - [0.930, [0.641, 0.000, 0.000]], - [0.932, [0.633, 0.000, 0.000]], - [0.933, [0.633, 0.000, 0.000]], - [0.935, [0.625, 0.000, 0.000]], - [0.937, [0.625, 0.000, 0.000]], - [0.939, [0.618, 0.000, 0.000]], - [0.941, [0.618, 0.000, 0.000]], - [0.943, [0.610, 0.000, 0.000]], - [0.945, [0.610, 0.000, 0.000]], - [0.947, [0.602, 0.000, 0.000]], - [0.949, [0.602, 0.000, 0.000]], - [0.951, [0.594, 0.000, 0.000]], - [0.953, [0.594, 0.000, 0.000]], - [0.955, [0.586, 0.000, 0.000]], - [0.957, [0.586, 0.000, 0.000]], - [0.959, [0.578, 0.000, 0.000]], - [0.961, [0.578, 0.000, 0.000]], - [0.963, [0.571, 0.000, 0.000]], - [0.965, [0.571, 0.000, 0.000]], - [0.967, [0.563, 0.000, 0.000]], - [0.969, [0.563, 0.000, 0.000]], - [0.971, [0.555, 0.000, 0.000]], - [0.973, [0.555, 0.000, 0.000]], - [0.975, [0.547, 0.000, 0.000]], - [0.977, [0.547, 0.000, 0.000]], - [0.978, [0.539, 0.000, 0.000]], - [0.980, [0.539, 0.000, 0.000]], - [0.982, [0.531, 0.000, 0.000]], - [0.984, [0.531, 0.000, 0.000]], - [0.986, [0.524, 0.000, 0.000]], - [0.988, [0.524, 0.000, 0.000]], - [0.990, [0.516, 0.000, 0.000]], - [0.992, [0.516, 0.000, 0.000]], - [0.994, [0.508, 0.000, 0.000]], - [0.996, [0.508, 0.000, 0.000]], - [0.998, [0.500, 0.000, 0.000]], - [1.000, [0.500, 0.000, 0.000]] -]; - -let coolwarm = [ - [0, [0.2298057, 0.298717966, 0.753683153]], - [0.002, [0.23213710352, 0.302198085808, 0.75674130404]], - [0.004, [0.23446850704, 0.305678205616, 0.75979945508]], - [0.006, [0.23679991056, 0.309158325424, 0.76285760612]], - [0.008, [0.23913131408, 0.312638445232, 0.76591575716]], - [0.01, [0.2414627176, 0.31611856504, 0.7689739082]], - [0.012, [0.24379412112, 0.319598684848, 0.77203205924]], - [0.014, [0.24612552464, 0.323078804656, 0.77509021028]], - [0.016, [0.24845692816, 0.326558924464, 0.77814836132]], - [0.018000000000000002, [0.25078833168, 0.330039044272, 0.78120651236]], - [0.020000000000000004, [0.2531197352, 0.33351916408, 0.7842646634]], - [0.022000000000000006, [0.25545113872, 0.336999283888, 0.78732281444]], - [0.024000000000000007, [0.25778254224, 0.340479403696, 0.79038096548]], - [0.02600000000000001, [0.26011394576, 0.343959523504, 0.79343911652]], - [0.02800000000000001, [0.26244534928, 0.347439643312, 0.79649726756]], - [0.030000000000000013, [0.2647767528, 0.35091976312, 0.7995554186]], - [0.032000000000000015, [0.26713712072, 0.354377408992, 0.802510568768]], - [0.034000000000000016, [0.26954576264, 0.357797598304, 0.805294050816]], - [0.03600000000000002, [0.27195440456, 0.361217787616, 0.808077532864]], - [0.03800000000000002, [0.27436304648, 0.364637976928, 0.810861014912]], - [0.04000000000000002, [0.2767716884, 0.36805816624, 0.81364449696]], - [0.04200000000000002, [0.27918033032, 0.371478355552, 0.816427979008]], - [0.044000000000000025, [0.28158897224, 0.374898544864, 0.819211461056]], - [0.04600000000000003, [0.28399761416, 0.378318734176, 0.821994943104]], - [0.04800000000000003, [0.28640625608, 0.381738923488, 0.824778425152]], - [0.05000000000000003, [0.288814898, 0.3851591128, 0.8275619072]], - [0.05200000000000003, [0.29122353992, 0.388579302112, 0.830345389248]], - [0.054000000000000034, [0.29363218184, 0.391999491424, 0.833128871296]], - [0.056000000000000036, [0.29604082376, 0.395419680736, 0.835912353344]], - [0.05800000000000004, [0.29844946568, 0.398839870048, 0.838695835392]], - [0.06000000000000004, [0.3008581076, 0.40226005936, 0.84147931744]], - [0.06200000000000004, [0.30326674952, 0.405680248672, 0.844262799488]], - [0.06400000000000004, [0.305737817264, 0.409041967456, 0.846819496992]], - [0.06600000000000004, [0.308229693616, 0.412384196064, 0.849300599648]], - [0.06800000000000005, [0.310721569968, 0.415726424672, 0.851781702304]], - [0.07000000000000005, [0.31321344632, 0.41906865328, 0.85426280496]], - [0.07200000000000005, [0.315705322672, 0.422410881888, 0.856743907616]], - [0.07400000000000005, [0.318197199024, 0.425753110496, 0.859225010272]], - [0.07600000000000005, [0.320689075376, 0.429095339104, 0.861706112928]], - [0.07800000000000006, [0.323180951728, 0.432437567712, 0.864187215584]], - [0.08000000000000006, [0.32567282808, 0.43577979632, 0.86666831824]], - [0.08200000000000006, [0.328164704432, 0.439122024928, 0.869149420896]], - [0.08400000000000006, [0.330656580784, 0.442464253536, 0.871630523552]], - [0.08600000000000006, [0.333148457136, 0.445806482144, 0.874111626208]], - [0.08800000000000006, [0.335640333488, 0.449148710752, 0.876592728864]], - [0.09000000000000007, [0.33813220984, 0.45249093936, 0.87907383152]], - [0.09200000000000007, [0.340624086192, 0.455833167968, 0.881554934176]], - [0.09400000000000007, [0.343126148896, 0.459162909376, 0.883995194384]], - [0.09600000000000007, [0.345699516064, 0.462405240384, 0.886149557456]], - [0.09800000000000007, [0.348272883232, 0.465647571392, 0.888303920528]], - [0.10000000000000007, [0.3508462504, 0.4688899024, 0.8904582836]], - [0.10200000000000008, [0.353419617568, 0.472132233408, 0.892612646672]], - [0.10400000000000008, [0.355992984736, 0.475374564416, 0.894767009744]], - [0.10600000000000008, [0.358566351904, 0.478616895424, 0.896921372816]], - [0.10800000000000008, [0.361139719072, 0.481859226432, 0.899075735888]], - [0.11000000000000008, [0.36371308624, 0.48510155744, 0.90123009896]], - [0.11200000000000009, [0.366286453408, 0.488343888448, 0.903384462032]], - [0.11400000000000009, [0.368859820576, 0.491586219456, 0.905538825104]], - [0.11600000000000009, [0.371433187744, 0.494828550464, 0.907693188176]], - [0.11800000000000009, [0.374006554912, 0.498070881472, 0.909847551248]], - [0.12000000000000009, [0.37657992208, 0.50131321248, 0.91200191432]], - [0.1220000000000001, [0.379153289248, 0.504555543488, 0.914156277392]], - [0.1240000000000001, [0.381726656416, 0.507797874496, 0.916310640464]], - [0.12600000000000008, [0.384336740576, 0.510978369664, 0.918291238512]], - [0.12800000000000009, [0.386983541728, 0.514097028992, 0.920098071536]], - [0.1300000000000001, [0.38963034288, 0.51721568832, 0.92190490456]], - [0.1320000000000001, [0.392277144032, 0.520334347648, 0.923711737584]], - [0.1340000000000001, [0.394923945184, 0.523453006976, 0.925518570608]], - [0.1360000000000001, [0.397570746336, 0.526571666304, 0.927325403632]], - [0.1380000000000001, [0.400217547488, 0.529690325632, 0.929132236656]], - [0.1400000000000001, [0.40286434864, 0.53280898496, 0.93093906968]], - [0.1420000000000001, [0.405511149792, 0.535927644288, 0.932745902704]], - [0.1440000000000001, [0.408157950944, 0.539046303616, 0.934552735728]], - [0.1460000000000001, [0.410804752096, 0.542164962944, 0.936359568752]], - [0.1480000000000001, [0.413451553248, 0.545283622272, 0.938166401776]], - [0.1500000000000001, [0.4160983544, 0.5484022816, 0.9399732348]], - [0.1520000000000001, [0.418745155552, 0.551520940928, 0.941780067824]], - [0.1540000000000001, [0.421391956704, 0.554639600256, 0.943586900848]], - [0.1560000000000001, [0.424038757856, 0.557758259584, 0.945393733872]], - [0.1580000000000001, [0.426738266432, 0.560747302656, 0.946881566088]], - [0.16000000000000011, [0.42944530464, 0.56371782912, 0.94832382676]], - [0.16200000000000012, [0.432152342848, 0.566688355584, 0.949766087432]], - [0.16400000000000012, [0.434859381056, 0.569658882048, 0.951208348104]], - [0.16600000000000012, [0.437566419264, 0.572629408512, 0.952650608776]], - [0.16800000000000012, [0.440273457472, 0.575599934976, 0.954092869448]], - [0.17000000000000012, [0.44298049568, 0.57857046144, 0.95553513012]], - [0.17200000000000013, [0.445687533888, 0.581540987904, 0.956977390792]], - [0.17400000000000013, [0.448394572096, 0.584511514368, 0.958419651464]], - [0.17600000000000013, [0.451101610304, 0.587482040832, 0.959861912136]], - [0.17800000000000013, [0.453808648512, 0.590452567296, 0.961304172808]], - [0.18000000000000013, [0.45651568672, 0.59342309376, 0.96274643348]], - [0.18200000000000013, [0.459222724928, 0.596393620224, 0.964188694152]], - [0.18400000000000014, [0.461929763136, 0.599364146688, 0.965630954824]], - [0.18600000000000014, [0.464636801344, 0.602334673152, 0.967073215496]], - [0.18800000000000014, [0.467354569984, 0.605262059264, 0.968421042664]], - [0.19000000000000014, [0.47010452992, 0.60806002432, 0.96948556932]], - [0.19200000000000014, [0.472854489856, 0.610857989376, 0.970550095976]], - [0.19400000000000014, [0.475604449792, 0.613655954432, 0.971614622632]], - [0.19600000000000015, [0.478354409728, 0.616453919488, 0.972679149288]], - [0.19800000000000015, [0.481104369664, 0.619251884544, 0.973743675944]], - [0.20000000000000015, [0.4838543296, 0.6220498496, 0.9748082026]], - [0.20200000000000015, [0.486604289536, 0.624847814656, 0.975872729256]], - [0.20400000000000015, [0.489354249472, 0.627645779712, 0.976937255912]], - [0.20600000000000016, [0.492104209408, 0.630443744768, 0.978001782568]], - [0.20800000000000016, [0.494854169344, 0.633241709824, 0.979066309224]], - [0.21000000000000016, [0.49760412928, 0.63603967488, 0.98013083588]], - [0.21200000000000016, [0.500354089216, 0.638837639936, 0.981195362536]], - [0.21400000000000016, [0.503104049152, 0.641635604992, 0.982259889192]], - [0.21600000000000016, [0.505854009088, 0.644433570048, 0.983324415848]], - [0.21800000000000017, [0.508603969024, 0.647231535104, 0.984388942504]], - [0.22000000000000017, [0.51136792208, 0.6499067144, 0.98521163872]], - [0.22200000000000017, [0.514140271008, 0.65250822224, 0.985889236672]], - [0.22400000000000017, [0.516912619936, 0.65510973008, 0.986566834624]], - [0.22600000000000017, [0.519684968864, 0.65771123792, 0.987244432576]], - [0.22800000000000017, [0.522457317792, 0.66031274576, 0.987922030528]], - [0.23000000000000018, [0.52522966672, 0.6629142536, 0.98859962848]], - [0.23200000000000018, [0.528002015648, 0.66551576144, 0.989277226432]], - [0.23400000000000018, [0.530774364576, 0.66811726928, 0.989954824384]], - [0.23600000000000018, [0.533546713504, 0.67071877712, 0.990632422336]], - [0.23800000000000018, [0.536319062432, 0.67332028496, 0.991310020288]], - [0.24000000000000019, [0.53909141136, 0.6759217928, 0.99198761824]], - [0.2420000000000002, [0.541863760288, 0.67852330064, 0.992665216192]], - [0.2440000000000002, [0.544636109216, 0.68112480848, 0.993342814144]], - [0.2460000000000002, [0.547408458144, 0.68372631632, 0.994020412096]], - [0.2480000000000002, [0.550180807072, 0.68632782416, 0.994698010048]], - [0.25000000000000017, [0.552953156, 0.688929332, 0.995375608]], - [0.25200000000000017, [0.555724932384, 0.6913113976, 0.99566108608]], - [0.25400000000000017, [0.558496708768, 0.6936934632, 0.99594656416]], - [0.25600000000000017, [0.561268485152, 0.6960755288, 0.99623204224]], - [0.2580000000000002, [0.564040261536, 0.6984575944, 0.99651752032]], - [0.2600000000000002, [0.56681203792, 0.70083966, 0.9968029984]], - [0.2620000000000002, [0.569583814304, 0.7032217256, 0.99708847648]], - [0.2640000000000002, [0.572355590688, 0.7056037912, 0.99737395456]], - [0.2660000000000002, [0.575127367072, 0.7079858568, 0.99765943264]], - [0.2680000000000002, [0.577899143456, 0.7103679224, 0.99794491072]], - [0.2700000000000002, [0.58067091984, 0.712749988, 0.9982303888]], - [0.2720000000000002, [0.583442696224, 0.7151320536, 0.99851586688]], - [0.2740000000000002, [0.586214472608, 0.7175141192, 0.99880134496]], - [0.2760000000000002, [0.588986248992, 0.7198961848, 0.99908682304]], - [0.2780000000000002, [0.591758025376, 0.7222782504, 0.99937230112]], - [0.2800000000000002, [0.59452980176, 0.724660316, 0.9996577792]], - [0.2820000000000002, [0.597292099176, 0.72695192716, 0.999795762568]], - [0.2840000000000002, [0.600038598312, 0.72909278092, 0.999687921416]], - [0.2860000000000002, [0.602785097448, 0.73123363468, 0.999580080264]], - [0.2880000000000002, [0.605531596584, 0.73337448844, 0.999472239112]], - [0.2900000000000002, [0.60827809572, 0.7355153422, 0.99936439796]], - [0.2920000000000002, [0.611024594856, 0.73765619596, 0.999256556808]], - [0.2940000000000002, [0.613771093992, 0.73979704972, 0.999148715656]], - [0.2960000000000002, [0.616517593128, 0.74193790348, 0.999040874504]], - [0.2980000000000002, [0.619264092264, 0.74407875724, 0.998933033352]], - [0.3000000000000002, [0.6220105914, 0.746219611, 0.9988251922]], - [0.3020000000000002, [0.624757090536, 0.74836046476, 0.998717351048]], - [0.3040000000000002, [0.627503589672, 0.75050131852, 0.998609509896]], - [0.3060000000000002, [0.630250088808, 0.75264217228, 0.998501668744]], - [0.3080000000000002, [0.632996587944, 0.75478302604, 0.998393827592]], - [0.3100000000000002, [0.63574308708, 0.7569238798, 0.99828598644]], - [0.3120000000000002, [0.638489586216, 0.75906473356, 0.998178145288]], - [0.3140000000000002, [0.64119773436, 0.76100945572, 0.997777363016]], - [0.3160000000000002, [0.64389309884, 0.76288880068, 0.997278933704]], - [0.3180000000000002, [0.64658846332, 0.76476814564, 0.996780504392]], - [0.32000000000000023, [0.6492838278, 0.7666474906, 0.99628207508]], - [0.32200000000000023, [0.65197919228, 0.76852683556, 0.995783645768]], - [0.32400000000000023, [0.65467455676, 0.77040618052, 0.995285216456]], - [0.32600000000000023, [0.65736992124, 0.77228552548, 0.994786787144]], - [0.32800000000000024, [0.66006528572, 0.77416487044, 0.994288357832]], - [0.33000000000000024, [0.6627606502, 0.7760442154, 0.99378992852]], - [0.33200000000000024, [0.66545601468, 0.77792356036, 0.993291499208]], - [0.33400000000000024, [0.66815137916, 0.77980290532, 0.992793069896]], - [0.33600000000000024, [0.67084674364, 0.78168225028, 0.992294640584]], - [0.33800000000000024, [0.67354210812, 0.78356159524, 0.991796211272]], - [0.34000000000000025, [0.6762374726, 0.7854409402, 0.99129778196]], - [0.34200000000000025, [0.67893283708, 0.78732028516, 0.990799352648]], - [0.34400000000000025, [0.681618497104, 0.789164616216, 0.990252918856]], - [0.34600000000000025, [0.684236225936, 0.790763849944, 0.989370453704]], - [0.34800000000000025, [0.686853954768, 0.792363083672, 0.988487988552]], - [0.35000000000000026, [0.6894716836, 0.7939623174, 0.9876055234]], - [0.35200000000000026, [0.692089412432, 0.795561551128, 0.986723058248]], - [0.35400000000000026, [0.694707141264, 0.797160784856, 0.985840593096]], - [0.35600000000000026, [0.697324870096, 0.798760018584, 0.984958127944]], - [0.35800000000000026, [0.699942598928, 0.800359252312, 0.984075662792]], - [0.36000000000000026, [0.70256032776, 0.80195848604, 0.98319319764]], - [0.36200000000000027, [0.705178056592, 0.803557719768, 0.982310732488]], - [0.36400000000000027, [0.707795785424, 0.805156953496, 0.981428267336]], - [0.36600000000000027, [0.710413514256, 0.806756187224, 0.980545802184]], - [0.36800000000000027, [0.713031243088, 0.808355420952, 0.979663337032]], - [0.3700000000000003, [0.71564897192, 0.80995465468, 0.97878087188]], - [0.3720000000000003, [0.718266700752, 0.811553888408, 0.977898406728]], - [0.3740000000000003, [0.720884429584, 0.813153122136, 0.977015941576]], - [0.3760000000000003, [0.72344998696, 0.81460394348, 0.97594656692]], - [0.3780000000000003, [0.72596337288, 0.81590635244, 0.97469028276]], - [0.3800000000000003, [0.7284767588, 0.8172087614, 0.9734339986]], - [0.3820000000000003, [0.73099014472, 0.81851117036, 0.97217771444]], - [0.3840000000000003, [0.73350353064, 0.81981357932, 0.97092143028]], - [0.3860000000000003, [0.73601691656, 0.82111598828, 0.96966514612]], - [0.3880000000000003, [0.73853030248, 0.82241839724, 0.96840886196]], - [0.3900000000000003, [0.7410436884, 0.8237208062, 0.9671525778]], - [0.3920000000000003, [0.74355707432, 0.82502321516, 0.96589629364]], - [0.3940000000000003, [0.74607046024, 0.82632562412, 0.96464000948]], - [0.3960000000000003, [0.74858384616, 0.82762803308, 0.96338372532]], - [0.3980000000000003, [0.75109723208, 0.82893044204, 0.96212744116]], - [0.4000000000000003, [0.753610618, 0.830232851, 0.960871157]], - [0.4020000000000003, [0.75612400392, 0.83153525996, 0.95961487284]], - [0.4040000000000003, [0.75863738984, 0.83283766892, 0.95835858868]], - [0.4060000000000003, [0.76115077576, 0.83414007788, 0.95710230452]], - [0.4080000000000003, [0.763549643472, 0.835169941728, 0.955530898224]], - [0.4100000000000003, [0.76593215144, 0.83616087056, 0.95391447448]], - [0.4120000000000003, [0.768314659408, 0.837151799392, 0.952298050736]], - [0.4140000000000003, [0.770697167376, 0.838142728224, 0.950681626992]], - [0.4160000000000003, [0.773079675344, 0.839133657056, 0.949065203248]], - [0.4180000000000003, [0.775462183312, 0.840124585888, 0.947448779504]], - [0.4200000000000003, [0.77784469128, 0.84111551472, 0.94583235576]], - [0.4220000000000003, [0.780227199248, 0.842106443552, 0.944215932016]], - [0.4240000000000003, [0.782609707216, 0.843097372384, 0.942599508272]], - [0.4260000000000003, [0.784992215184, 0.844088301216, 0.940983084528]], - [0.4280000000000003, [0.787374723152, 0.845079230048, 0.939366660784]], - [0.4300000000000003, [0.78975723112, 0.84607015888, 0.93775023704]], - [0.43200000000000033, [0.792139739088, 0.847061087712, 0.936133813296]], - [0.43400000000000033, [0.794522247056, 0.848052016544, 0.934517389552]], - [0.43600000000000033, [0.796904755024, 0.849042945376, 0.932900965808]], - [0.43800000000000033, [0.79924803472, 0.849952891472, 0.93119873104]], - [0.44000000000000034, [0.8014736296, 0.85061988936, 0.9292390632]], - [0.44200000000000034, [0.80369922448, 0.851286887248, 0.92727939536]], - [0.44400000000000034, [0.80592481936, 0.851953885136, 0.92531972752]], - [0.44600000000000034, [0.80815041424, 0.852620883024, 0.92336005968]], - [0.44800000000000034, [0.81037600912, 0.853287880912, 0.92140039184]], - [0.45000000000000034, [0.812601604, 0.8539548788, 0.919440724]], - [0.45200000000000035, [0.81482719888, 0.854621876688, 0.91748105616]], - [0.45400000000000035, [0.81705279376, 0.855288874576, 0.91552138832]], - [0.45600000000000035, [0.81927838864, 0.855955872464, 0.91356172048]], - [0.45800000000000035, [0.82150398352, 0.856622870352, 0.91160205264]], - [0.46000000000000035, [0.8237295784, 0.85728986824, 0.9096423848]], - [0.46200000000000035, [0.82595517328, 0.857956866128, 0.90768271696]], - [0.46400000000000036, [0.82818076816, 0.858623864016, 0.90572304912]], - [0.46600000000000036, [0.83040636304, 0.859290861904, 0.90376338128]], - [0.46800000000000036, [0.83263195792, 0.859957859792, 0.90180371344]], - [0.47000000000000036, [0.83474370164, 0.86041607304, 0.89964190692]], - [0.47200000000000036, [0.836787134664, 0.860749015504, 0.897358817192]], - [0.47400000000000037, [0.838830567688, 0.861081957968, 0.895075727464]], - [0.47600000000000037, [0.840874000712, 0.861414900432, 0.892792637736]], - [0.47800000000000037, [0.842917433736, 0.861747842896, 0.890509548008]], - [0.48000000000000037, [0.84496086676, 0.86208078536, 0.88822645828]], - [0.4820000000000004, [0.847004299784, 0.862413727824, 0.885943368552]], - [0.4840000000000004, [0.849047732808, 0.862746670288, 0.883660278824]], - [0.4860000000000004, [0.851091165832, 0.863079612752, 0.881377189096]], - [0.4880000000000004, [0.853134598856, 0.863412555216, 0.879094099368]], - [0.4900000000000004, [0.85517803188, 0.86374549768, 0.87681100964]], - [0.4920000000000004, [0.857221464904, 0.864078440144, 0.874527919912]], - [0.4940000000000004, [0.859264897928, 0.864411382608, 0.872244830184]], - [0.4960000000000004, [0.861308330952, 0.864744325072, 0.869961740456]], - [0.4980000000000004, [0.863351763976, 0.865077267536, 0.867678650728]], - [0.5000000000000003, [0.865395197, 0.86541021, 0.865395561]], - [0.5020000000000003, [0.867468283848, 0.864355927568, 0.86254660004]], - [0.5040000000000003, [0.869541370696, 0.863301645136, 0.85969763908]], - [0.5060000000000003, [0.871614457544, 0.862247362704, 0.85684867812]], - [0.5080000000000003, [0.873687544392, 0.861193080272, 0.85399971716]], - [0.5100000000000003, [0.87576063124, 0.86013879784, 0.8511507562]], - [0.5120000000000003, [0.877833718088, 0.859084515408, 0.84830179524]], - [0.5140000000000003, [0.879906804936, 0.858030232976, 0.84545283428]], - [0.5160000000000003, [0.881979891784, 0.856975950544, 0.84260387332]], - [0.5180000000000003, [0.884052978632, 0.855921668112, 0.83975491236]], - [0.5200000000000004, [0.88612606548, 0.85486738568, 0.8369059514]], - [0.5220000000000004, [0.888199152328, 0.853813103248, 0.83405699044]], - [0.5240000000000004, [0.890272239176, 0.852758820816, 0.83120802948]], - [0.5260000000000004, [0.892345326024, 0.851704538384, 0.82835906852]], - [0.5280000000000004, [0.894418412872, 0.850650255952, 0.82551010756]], - [0.5300000000000004, [0.89649149972, 0.84959597352, 0.8226611466]], - [0.5320000000000004, [0.898419348936, 0.84841979504, 0.819767616224]], - [0.5340000000000004, [0.900105135432, 0.84704045648, 0.816799803488]], - [0.5360000000000004, [0.901790921928, 0.84566111792, 0.813831990752]], - [0.5380000000000004, [0.903476708424, 0.84428177936, 0.810864178016]], - [0.5400000000000004, [0.90516249492, 0.8429024408, 0.80789636528]], - [0.5420000000000004, [0.906848281416, 0.84152310224, 0.804928552544]], - [0.5440000000000004, [0.908534067912, 0.84014376368, 0.801960739808]], - [0.5460000000000004, [0.910219854408, 0.83876442512, 0.798992927072]], - [0.5480000000000004, [0.911905640904, 0.83738508656, 0.796025114336]], - [0.5500000000000004, [0.9135914274, 0.836005748, 0.7930573016]], - [0.5520000000000004, [0.915277213896, 0.83462640944, 0.790089488864]], - [0.5540000000000004, [0.916963000392, 0.83324707088, 0.787121676128]], - [0.5560000000000004, [0.918648786888, 0.83186773232, 0.784153863392]], - [0.5580000000000004, [0.920334573384, 0.83048839376, 0.781186050656]], - [0.5600000000000004, [0.92202035988, 0.8291090552, 0.77821823792]], - [0.5620000000000004, [0.923706146376, 0.82772971664, 0.775250425184]], - [0.5640000000000004, [0.9251039574, 0.826114924928, 0.772215400352]], - [0.5660000000000004, [0.9264057766, 0.824421648832, 0.769157971488]], - [0.5680000000000004, [0.9277075958, 0.822728372736, 0.766100542624]], - [0.5700000000000004, [0.929009415, 0.82103509664, 0.76304311376]], - [0.5720000000000004, [0.9303112342, 0.819341820544, 0.759985684896]], - [0.5740000000000004, [0.9316130534, 0.817648544448, 0.756928256032]], - [0.5760000000000004, [0.9329148726, 0.815955268352, 0.753870827168]], - [0.5780000000000004, [0.9342166918, 0.814261992256, 0.750813398304]], - [0.5800000000000004, [0.935518511, 0.81256871616, 0.74775596944]], - [0.5820000000000004, [0.9368203302, 0.810875440064, 0.744698540576]], - [0.5840000000000004, [0.9381221494, 0.809182163968, 0.741641111712]], - [0.5860000000000004, [0.9394239686, 0.807488887872, 0.738583682848]], - [0.5880000000000004, [0.9407257878, 0.805795611776, 0.735526253984]], - [0.5900000000000004, [0.942027607, 0.80410233568, 0.73246882512]], - [0.5920000000000004, [0.9433294262, 0.802409059584, 0.729411396256]], - [0.5940000000000004, [0.944583593424, 0.800678165472, 0.726346320392]], - [0.5960000000000004, [0.945504196816, 0.798683945248, 0.723227715528]], - [0.5980000000000004, [0.946424800208, 0.796689725024, 0.720109110664]], - [0.6000000000000004, [0.9473454036, 0.7946955048, 0.7169905058]], - [0.6020000000000004, [0.948266006992, 0.792701284576, 0.713871900936]], - [0.6040000000000004, [0.949186610384, 0.790707064352, 0.710753296072]], - [0.6060000000000004, [0.950107213776, 0.788712844128, 0.707634691208]], - [0.6080000000000004, [0.951027817168, 0.786718623904, 0.704516086344]], - [0.6100000000000004, [0.95194842056, 0.78472440368, 0.70139748148]], - [0.6120000000000004, [0.952869023952, 0.782730183456, 0.698278876616]], - [0.6140000000000004, [0.953789627344, 0.780735963232, 0.695160271752]], - [0.6160000000000004, [0.954710230736, 0.778741743008, 0.692041666888]], - [0.6180000000000004, [0.955630834128, 0.776747522784, 0.688923062024]], - [0.6200000000000004, [0.95655143752, 0.77475330256, 0.68580445716]], - [0.6220000000000004, [0.957472040912, 0.772759082336, 0.682685852296]], - [0.6240000000000004, [0.958392644304, 0.770764862112, 0.679567247432]], - [0.6260000000000004, [0.959124148688, 0.768627433824, 0.676431747176]], - [0.6280000000000004, [0.959666554064, 0.766346797472, 0.673279351528]], - [0.6300000000000004, [0.96020895944, 0.76406616112, 0.67012695588]], - [0.6320000000000005, [0.960751364816, 0.761785524768, 0.666974560232]], - [0.6340000000000005, [0.961293770192, 0.759504888416, 0.663822164584]], - [0.6360000000000005, [0.961836175568, 0.757224252064, 0.660669768936]], - [0.6380000000000005, [0.962378580944, 0.754943615712, 0.657517373288]], - [0.6400000000000005, [0.96292098632, 0.75266297936, 0.65436497764]], - [0.6420000000000005, [0.963463391696, 0.750382343008, 0.651212581992]], - [0.6440000000000005, [0.964005797072, 0.748101706656, 0.648060186344]], - [0.6460000000000005, [0.964548202448, 0.745821070304, 0.644907790696]], - [0.6480000000000005, [0.965090607824, 0.743540433952, 0.641755395048]], - [0.6500000000000005, [0.9656330132, 0.7412597976, 0.6386029994]], - [0.6520000000000005, [0.966175418576, 0.738979161248, 0.635450603752]], - [0.6540000000000005, [0.966717823952, 0.736698524896, 0.632298208104]], - [0.6560000000000005, [0.967260229328, 0.734417888544, 0.629145812456]], - [0.6580000000000005, [0.967475091992, 0.731900305888, 0.62598668936]], - [0.6600000000000005, [0.96764316284, 0.72934887376, 0.6228266052]], - [0.6620000000000005, [0.967811233688, 0.726797441632, 0.61966652104]], - [0.6640000000000005, [0.967979304536, 0.724246009504, 0.61650643688]], - [0.6660000000000005, [0.968147375384, 0.721694577376, 0.61334635272]], - [0.6680000000000005, [0.968315446232, 0.719143145248, 0.61018626856]], - [0.6700000000000005, [0.96848351708, 0.71659171312, 0.6070261844]], - [0.6720000000000005, [0.968651587928, 0.714040280992, 0.60386610024]], - [0.6740000000000005, [0.968819658776, 0.711488848864, 0.60070601608]], - [0.6760000000000005, [0.968987729624, 0.708937416736, 0.59754593192]], - [0.6780000000000005, [0.969155800472, 0.706385984608, 0.59438584776]], - [0.6800000000000005, [0.96932387132, 0.70383455248, 0.5912257636]], - [0.6820000000000005, [0.969491942168, 0.701283120352, 0.58806567944]], - [0.6840000000000005, [0.969660013016, 0.698731688224, 0.58490559528]], - [0.6860000000000005, [0.969828083864, 0.696180256096, 0.58174551112]], - [0.6880000000000005, [0.96990384964, 0.693565153584, 0.578589661024]], - [0.6900000000000005, [0.9697027002, 0.69075903992, 0.57544651312]], - [0.6920000000000005, [0.96950155076, 0.687952926256, 0.572303365216]], - [0.6940000000000005, [0.96930040132, 0.685146812592, 0.569160217312]], - [0.6960000000000005, [0.96909925188, 0.682340698928, 0.566017069408]], - [0.6980000000000005, [0.96889810244, 0.679534585264, 0.562873921504]], - [0.7000000000000005, [0.968696953, 0.6767284716, 0.5597307736]], - [0.7020000000000005, [0.96849580356, 0.673922357936, 0.556587625696]], - [0.7040000000000005, [0.96829465412, 0.671116244272, 0.553444477792]], - [0.7060000000000005, [0.96809350468, 0.668310130608, 0.550301329888]], - [0.7080000000000005, [0.96789235524, 0.665504016944, 0.547158181984]], - [0.7100000000000005, [0.9676912058, 0.66269790328, 0.54401503408]], - [0.7120000000000005, [0.96749005636, 0.659891789616, 0.540871886176]], - [0.7140000000000005, [0.96728890692, 0.657085675952, 0.537728738272]], - [0.7160000000000005, [0.96708775748, 0.654279562288, 0.534585590368]], - [0.7180000000000005, [0.96688660804, 0.651473448624, 0.531442442464]], - [0.7200000000000005, [0.96645885252, 0.648518007, 0.52832424808]], - [0.7220000000000005, [0.965895133352, 0.6454729686, 0.525221025808]], - [0.7240000000000005, [0.965331414184, 0.6424279302, 0.522117803536]], - [0.7260000000000005, [0.964767695016, 0.6393828918, 0.519014581264]], - [0.7280000000000005, [0.964203975848, 0.6363378534, 0.515911358992]], - [0.7300000000000005, [0.96364025668, 0.633292815, 0.51280813672]], - [0.7320000000000005, [0.963076537512, 0.6302477766, 0.509704914448]], - [0.7340000000000005, [0.962512818344, 0.6272027382, 0.506601692176]], - [0.7360000000000005, [0.961949099176, 0.6241576998, 0.503498469904]], - [0.7380000000000005, [0.961385380008, 0.6211126614, 0.500395247632]], - [0.7400000000000005, [0.96082166084, 0.618067623, 0.49729202536]], - [0.7420000000000005, [0.960257941672, 0.6150225846, 0.494188803088]], - [0.7440000000000005, [0.959694222504, 0.6119775462, 0.491085580816]], - [0.7460000000000006, [0.959130503336, 0.6089325078, 0.487982358544]], - [0.7480000000000006, [0.958566784168, 0.6058874694, 0.484879136272]], - [0.7500000000000006, [0.958003065, 0.602842431, 0.481775914]], - [0.7520000000000006, [0.957085164264, 0.599572577368, 0.47873385128]], - [0.7540000000000006, [0.956167263528, 0.596302723736, 0.47569178856]], - [0.7560000000000006, [0.955249362792, 0.593032870104, 0.47264972584]], - [0.7580000000000006, [0.954331462056, 0.589763016472, 0.46960766312]], - [0.7600000000000006, [0.95341356132, 0.58649316284, 0.4665656004]], - [0.7620000000000006, [0.952495660584, 0.583223309208, 0.46352353768]], - [0.7640000000000006, [0.951577759848, 0.579953455576, 0.46048147496]], - [0.7660000000000006, [0.950659859112, 0.576683601944, 0.45743941224]], - [0.7680000000000006, [0.949741958376, 0.573413748312, 0.45439734952]], - [0.7700000000000006, [0.94882405764, 0.57014389468, 0.4513552868]], - [0.7720000000000006, [0.947906156904, 0.566874041048, 0.44831322408]], - [0.7740000000000006, [0.946988256168, 0.563604187416, 0.44527116136]], - [0.7760000000000006, [0.946070355432, 0.560334333784, 0.44222909864]], - [0.7780000000000006, [0.945152454696, 0.557064480152, 0.43918703592]], - [0.7800000000000006, [0.94423455396, 0.55379462652, 0.4361449732]], - [0.7820000000000006, [0.943187683224, 0.550444350208, 0.433133120984]], - [0.7840000000000006, [0.941925862488, 0.546960036096, 0.430171619608]], - [0.7860000000000006, [0.940664041752, 0.543475721984, 0.427210118232]], - [0.7880000000000006, [0.939402221016, 0.539991407872, 0.424248616856]], - [0.7900000000000006, [0.93814040028, 0.53650709376, 0.42128711548]], - [0.7920000000000006, [0.936878579544, 0.533022779648, 0.418325614104]], - [0.7940000000000006, [0.935616758808, 0.529538465536, 0.415364112728]], - [0.7960000000000006, [0.934354938072, 0.526054151424, 0.412402611352]], - [0.7980000000000006, [0.933093117336, 0.522569837312, 0.409441109976]], - [0.8000000000000006, [0.9318312966, 0.5190855232, 0.4064796086]], - [0.8020000000000006, [0.930569475864, 0.515601209088, 0.403518107224]], - [0.8040000000000006, [0.929307655128, 0.512116894976, 0.400556605848]], - [0.8060000000000006, [0.928045834392, 0.508632580864, 0.397595104472]], - [0.8080000000000006, [0.926784013656, 0.505148266752, 0.394633603096]], - [0.8100000000000006, [0.92552219292, 0.50166395264, 0.39167210172]], - [0.8120000000000006, [0.924260372184, 0.498179638528, 0.388710600344]], - [0.8140000000000006, [0.922749777144, 0.494536603536, 0.385822674808]], - [0.8160000000000006, [0.921156257336, 0.490840661584, 0.382959274552]], - [0.8180000000000006, [0.919562737528, 0.487144719632, 0.380095874296]], - [0.8200000000000006, [0.91796921772, 0.48344877768, 0.37723247404]], - [0.8220000000000006, [0.916375697912, 0.479752835728, 0.374369073784]], - [0.8240000000000006, [0.914782178104, 0.476056893776, 0.371505673528]], - [0.8260000000000006, [0.913188658296, 0.472360951824, 0.368642273272]], - [0.8280000000000006, [0.911595138488, 0.468665009872, 0.365778873016]], - [0.8300000000000006, [0.91000161868, 0.46496906792, 0.36291547276]], - [0.8320000000000006, [0.908408098872, 0.461273125968, 0.360052072504]], - [0.8340000000000006, [0.906814579064, 0.457577184016, 0.357188672248]], - [0.8360000000000006, [0.905221059256, 0.453881242064, 0.354325271992]], - [0.8380000000000006, [0.903627539448, 0.450185300112, 0.351461871736]], - [0.8400000000000006, [0.90203401964, 0.44648935816, 0.34859847148]], - [0.8420000000000006, [0.900440499832, 0.442793416208, 0.345735071224]], - [0.8440000000000006, [0.898807295432, 0.439069496, 0.342885896688]], - [0.8460000000000006, [0.896896298888, 0.435149728, 0.340136302192]], - [0.8480000000000006, [0.894985302344, 0.43122996, 0.337386707696]], - [0.8500000000000006, [0.8930743058, 0.427310192, 0.3346371132]], - [0.8520000000000006, [0.891163309256, 0.423390424, 0.331887518704]], - [0.8540000000000006, [0.889252312712, 0.419470656, 0.329137924208]], - [0.8560000000000006, [0.887341316168, 0.415550888, 0.326388329712]], - [0.8580000000000007, [0.885430319624, 0.41163112, 0.323638735216]], - [0.8600000000000007, [0.88351932308, 0.407711352, 0.32088914072]], - [0.8620000000000007, [0.881608326536, 0.403791584, 0.318139546224]], - [0.8640000000000007, [0.879697329992, 0.399871816, 0.315389951728]], - [0.8660000000000007, [0.877786333448, 0.395952048, 0.312640357232]], - [0.8680000000000007, [0.875875336904, 0.39203228, 0.309890762736]], - [0.8700000000000007, [0.87396434036, 0.388112512, 0.30714116824]], - [0.8720000000000007, [0.872053343816, 0.384192744, 0.304391573744]], - [0.8740000000000007, [0.870142347272, 0.380272976, 0.301641979248]], - [0.8760000000000007, [0.868080727176, 0.376219055328, 0.298956270544]], - [0.8780000000000007, [0.865868483528, 0.372030981984, 0.296334447632]], - [0.8800000000000007, [0.86365623988, 0.36784290864, 0.29371262472]], - [0.8820000000000007, [0.861443996232, 0.363654835296, 0.291090801808]], - [0.8840000000000007, [0.859231752584, 0.359466761952, 0.288468978896]], - [0.8860000000000007, [0.857019508936, 0.355278688608, 0.285847155984]], - [0.8880000000000007, [0.854807265288, 0.351090615264, 0.283225333072]], - [0.8900000000000007, [0.85259502164, 0.34690254192, 0.28060351016]], - [0.8920000000000007, [0.850382777992, 0.342714468576, 0.277981687248]], - [0.8940000000000007, [0.848170534344, 0.338526395232, 0.275359864336]], - [0.8960000000000007, [0.845958290696, 0.334338321888, 0.272738041424]], - [0.8980000000000007, [0.843746047048, 0.330150248544, 0.270116218512]], - [0.9000000000000007, [0.8415338034, 0.3259621752, 0.2674943956]], - [0.9020000000000007, [0.839321559752, 0.321774101856, 0.264872572688]], - [0.9040000000000007, [0.837109316104, 0.317586028512, 0.262250749776]], - [0.9060000000000007, [0.834897072456, 0.313397955168, 0.259628926864]], - [0.9080000000000007, [0.832437169368, 0.308865369264, 0.257129766968]], - [0.9100000000000007, [0.82994188636, 0.30428356728, 0.25464813036]], - [0.9120000000000007, [0.827446603352, 0.299701765296, 0.252166493752]], - [0.9140000000000007, [0.824951320344, 0.295119963312, 0.249684857144]], - [0.9160000000000007, [0.822456037336, 0.290538161328, 0.247203220536]], - [0.9180000000000007, [0.819960754328, 0.285956359344, 0.244721583928]], - [0.9200000000000007, [0.81746547132, 0.28137455736, 0.24223994732]], - [0.9220000000000007, [0.814970188312, 0.276792755376, 0.239758310712]], - [0.9240000000000007, [0.812474905304, 0.272210953392, 0.237276674104]], - [0.9260000000000007, [0.809979622296, 0.267629151408, 0.234795037496]], - [0.9280000000000007, [0.807484339288, 0.263047349424, 0.232313400888]], - [0.9300000000000007, [0.80498905628, 0.25846554744, 0.22983176428]], - [0.9320000000000007, [0.802493773272, 0.253883745456, 0.227350127672]], - [0.9340000000000007, [0.799998490264, 0.249301943472, 0.224868491064]], - [0.9360000000000007, [0.797503207256, 0.244720141488, 0.222386854456]], - [0.9380000000000007, [0.794942196024, 0.239939186432, 0.219943058936]], - [0.9400000000000007, [0.79218400012, 0.23456077216, 0.21761278668]], - [0.9420000000000007, [0.789425804216, 0.229182357888, 0.215282514424]], - [0.9440000000000007, [0.786667608312, 0.223803943616, 0.212952242168]], - [0.9460000000000007, [0.783909412408, 0.218425529344, 0.210621969912]], - [0.9480000000000007, [0.781151216504, 0.213047115072, 0.208291697656]], - [0.9500000000000007, [0.7783930206, 0.2076687008, 0.2059614254]], - [0.9520000000000007, [0.775634824696, 0.202290286528, 0.203631153144]], - [0.9540000000000007, [0.772876628792, 0.196911872256, 0.201300880888]], - [0.9560000000000007, [0.770118432888, 0.191533457984, 0.198970608632]], - [0.9580000000000007, [0.767360236984, 0.186155043712, 0.196640336376]], - [0.9600000000000007, [0.76460204108, 0.18077662944, 0.19431006412]], - [0.9620000000000007, [0.761843845176, 0.175398215168, 0.191979791864]], - [0.9640000000000007, [0.759085649272, 0.170019800896, 0.189649519608]], - [0.9660000000000007, [0.756327453368, 0.164641386624, 0.187319247352]], - [0.9680000000000007, [0.753569257464, 0.159262972352, 0.184988975096]], - [0.9700000000000008, [0.75066046296, 0.15157847072, 0.18275983056]], - [0.9720000000000008, [0.747661309296, 0.142510316672, 0.180591362656]], - [0.9740000000000008, [0.744662155632, 0.133442162624, 0.178422894752]], - [0.9760000000000008, [0.741663001968, 0.124374008576, 0.176254426848]], - [0.9780000000000008, [0.738663848304, 0.115305854528, 0.174085958944]], - [0.9800000000000008, [0.73566469464, 0.10623770048, 0.17191749104]], - [0.9820000000000008, [0.732665540976, 0.097169546432, 0.169749023136]], - [0.9840000000000008, [0.729666387312, 0.088101392384, 0.167580555232]], - [0.9860000000000008, [0.726667233648, 0.079033238336, 0.165412087328]], - [0.9880000000000008, [0.723668079984, 0.069965084288, 0.163243619424]], - [0.9900000000000008, [0.72066892632, 0.06089693024, 0.16107515152]], - [0.9920000000000008, [0.717669772656, 0.051828776192, 0.158906683616]], - [0.9940000000000008, [0.714670618992, 0.042760622144, 0.156738215712]], - [0.9960000000000008, [0.711671465328, 0.033692468096, 0.154569747808]], - [0.9980000000000008, [0.708672311664, 0.024624314048, 0.152401279904]], - [1.0000000000000007, [0.705673158, 0.01555616, 0.150232812]] -]; - -let hot = [ - [0.0, [0.0416, 0.0, 0.0]], - [0.002, [0.0468503704678, 0.0, 0.0]], - [0.004, [0.0521007409355, 0.0, 0.0]], - [0.006, [0.0573511114033, 0.0, 0.0]], - [0.008, [0.062601481871, 0.0, 0.0]], - [0.01, [0.0678518523388, 0.0, 0.0]], - [0.012, [0.0731022228066, 0.0, 0.0]], - [0.014, [0.0783525932743, 0.0, 0.0]], - [0.016, [0.0836029637421, 0.0, 0.0]], - [0.018000000000000002, [0.0888533342099, 0.0, 0.0]], - [0.020000000000000004, [0.0941037046776, 0.0, 0.0]], - [0.022000000000000006, [0.0993540751454, 0.0, 0.0]], - [0.024000000000000007, [0.104604445613, 0.0, 0.0]], - [0.02600000000000001, [0.109854816081, 0.0, 0.0]], - [0.02800000000000001, [0.115105186549, 0.0, 0.0]], - [0.030000000000000013, [0.120355557016, 0.0, 0.0]], - [0.032000000000000015, [0.125605927484, 0.0, 0.0]], - [0.034000000000000016, [0.130856297952, 0.0, 0.0]], - [0.03600000000000002, [0.13610666842, 0.0, 0.0]], - [0.03800000000000002, [0.141357038887, 0.0, 0.0]], - [0.04000000000000002, [0.146607409355, 0.0, 0.0]], - [0.04200000000000002, [0.151857779823, 0.0, 0.0]], - [0.044000000000000025, [0.157108150291, 0.0, 0.0]], - [0.04600000000000003, [0.162358520759, 0.0, 0.0]], - [0.04800000000000003, [0.167608891226, 0.0, 0.0]], - [0.05000000000000003, [0.172859261694, 0.0, 0.0]], - [0.05200000000000003, [0.178109632162, 0.0, 0.0]], - [0.054000000000000034, [0.18336000263, 0.0, 0.0]], - [0.056000000000000036, [0.188610373097, 0.0, 0.0]], - [0.05800000000000004, [0.193860743565, 0.0, 0.0]], - [0.06000000000000004, [0.199111114033, 0.0, 0.0]], - [0.06200000000000004, [0.204361484501, 0.0, 0.0]], - [0.06400000000000004, [0.209611854968, 0.0, 0.0]], - [0.06600000000000004, [0.214862225436, 0.0, 0.0]], - [0.06800000000000005, [0.220112595904, 0.0, 0.0]], - [0.07000000000000005, [0.225362966372, 0.0, 0.0]], - [0.07200000000000005, [0.230613336839, 0.0, 0.0]], - [0.07400000000000005, [0.235863707307, 0.0, 0.0]], - [0.07600000000000005, [0.241114077775, 0.0, 0.0]], - [0.07800000000000006, [0.246364448243, 0.0, 0.0]], - [0.08000000000000006, [0.25161481871, 0.0, 0.0]], - [0.08200000000000006, [0.256865189178, 0.0, 0.0]], - [0.08400000000000006, [0.262115559646, 0.0, 0.0]], - [0.08600000000000006, [0.267365930114, 0.0, 0.0]], - [0.08800000000000006, [0.272616300582, 0.0, 0.0]], - [0.09000000000000007, [0.277866671049, 0.0, 0.0]], - [0.09200000000000007, [0.283117041517, 0.0, 0.0]], - [0.09400000000000007, [0.288367411985, 0.0, 0.0]], - [0.09600000000000007, [0.293617782453, 0.0, 0.0]], - [0.09800000000000007, [0.29886815292, 0.0, 0.0]], - [0.10000000000000007, [0.304118523388, 0.0, 0.0]], - [0.10200000000000008, [0.309368893856, 0.0, 0.0]], - [0.10400000000000008, [0.314619264324, 0.0, 0.0]], - [0.10600000000000008, [0.319869634791, 0.0, 0.0]], - [0.10800000000000008, [0.325120005259, 0.0, 0.0]], - [0.11000000000000008, [0.330370375727, 0.0, 0.0]], - [0.11200000000000009, [0.335620746195, 0.0, 0.0]], - [0.11400000000000009, [0.340871116662, 0.0, 0.0]], - [0.11600000000000009, [0.34612148713, 0.0, 0.0]], - [0.11800000000000009, [0.351371857598, 0.0, 0.0]], - [0.12000000000000009, [0.356622228066, 0.0, 0.0]], - [0.1220000000000001, [0.361872598533, 0.0, 0.0]], - [0.1240000000000001, [0.367122969001, 0.0, 0.0]], - [0.12600000000000008, [0.372373339469, 0.0, 0.0]], - [0.12800000000000009, [0.377623709937, 0.0, 0.0]], - [0.1300000000000001, [0.382874080405, 0.0, 0.0]], - [0.1320000000000001, [0.388124450872, 0.0, 0.0]], - [0.1340000000000001, [0.39337482134, 0.0, 0.0]], - [0.1360000000000001, [0.398625191808, 0.0, 0.0]], - [0.1380000000000001, [0.403875562276, 0.0, 0.0]], - [0.1400000000000001, [0.409125932743, 0.0, 0.0]], - [0.1420000000000001, [0.414376303211, 0.0, 0.0]], - [0.1440000000000001, [0.419626673679, 0.0, 0.0]], - [0.1460000000000001, [0.424877044147, 0.0, 0.0]], - [0.1480000000000001, [0.430127414614, 0.0, 0.0]], - [0.1500000000000001, [0.435377785082, 0.0, 0.0]], - [0.1520000000000001, [0.44062815555, 0.0, 0.0]], - [0.1540000000000001, [0.445878526018, 0.0, 0.0]], - [0.1560000000000001, [0.451128896485, 0.0, 0.0]], - [0.1580000000000001, [0.456379266953, 0.0, 0.0]], - [0.16000000000000011, [0.461629637421, 0.0, 0.0]], - [0.16200000000000012, [0.466880007889, 0.0, 0.0]], - [0.16400000000000012, [0.472130378356, 0.0, 0.0]], - [0.16600000000000012, [0.477380748824, 0.0, 0.0]], - [0.16800000000000012, [0.482631119292, 0.0, 0.0]], - [0.17000000000000012, [0.48788148976, 0.0, 0.0]], - [0.17200000000000013, [0.493131860228, 0.0, 0.0]], - [0.17400000000000013, [0.498382230695, 0.0, 0.0]], - [0.17600000000000013, [0.503632601163, 0.0, 0.0]], - [0.17800000000000013, [0.508882971631, 0.0, 0.0]], - [0.18000000000000013, [0.514133342099, 0.0, 0.0]], - [0.18200000000000013, [0.519383712566, 0.0, 0.0]], - [0.18400000000000014, [0.524634083034, 0.0, 0.0]], - [0.18600000000000014, [0.529884453502, 0.0, 0.0]], - [0.18800000000000014, [0.53513482397, 0.0, 0.0]], - [0.19000000000000014, [0.540385194437, 0.0, 0.0]], - [0.19200000000000014, [0.545635564905, 0.0, 0.0]], - [0.19400000000000014, [0.550885935373, 0.0, 0.0]], - [0.19600000000000015, [0.556136305841, 0.0, 0.0]], - [0.19800000000000015, [0.561386676308, 0.0, 0.0]], - [0.20000000000000015, [0.566637046776, 0.0, 0.0]], - [0.20200000000000015, [0.571887417244, 0.0, 0.0]], - [0.20400000000000015, [0.577137787712, 0.0, 0.0]], - [0.20600000000000016, [0.582388158179, 0.0, 0.0]], - [0.20800000000000016, [0.587638528647, 0.0, 0.0]], - [0.21000000000000016, [0.592888899115, 0.0, 0.0]], - [0.21200000000000016, [0.598139269583, 0.0, 0.0]], - [0.21400000000000016, [0.603389640051, 0.0, 0.0]], - [0.21600000000000016, [0.608640010518, 0.0, 0.0]], - [0.21800000000000017, [0.613890380986, 0.0, 0.0]], - [0.22000000000000017, [0.619140751454, 0.0, 0.0]], - [0.22200000000000017, [0.624391121922, 0.0, 0.0]], - [0.22400000000000017, [0.629641492389, 0.0, 0.0]], - [0.22600000000000017, [0.634891862857, 0.0, 0.0]], - [0.22800000000000017, [0.640142233325, 0.0, 0.0]], - [0.23000000000000018, [0.645392603793, 0.0, 0.0]], - [0.23200000000000018, [0.65064297426, 0.0, 0.0]], - [0.23400000000000018, [0.655893344728, 0.0, 0.0]], - [0.23600000000000018, [0.661143715196, 0.0, 0.0]], - [0.23800000000000018, [0.666394085664, 0.0, 0.0]], - [0.24000000000000019, [0.671644456131, 0.0, 0.0]], - [0.2420000000000002, [0.676894826599, 0.0, 0.0]], - [0.2440000000000002, [0.682145197067, 0.0, 0.0]], - [0.2460000000000002, [0.687395567535, 0.0, 0.0]], - [0.2480000000000002, [0.692645938002, 0.0, 0.0]], - [0.25000000000000017, [0.69789630847, 0.0, 0.0]], - [0.25200000000000017, [0.703146678938, 0.0, 0.0]], - [0.25400000000000017, [0.708397049406, 0.0, 0.0]], - [0.25600000000000017, [0.713647419874, 0.0, 0.0]], - [0.2580000000000002, [0.718897790341, 0.0, 0.0]], - [0.2600000000000002, [0.724148160809, 0.0, 0.0]], - [0.2620000000000002, [0.729398531277, 0.0, 0.0]], - [0.2640000000000002, [0.734648901745, 0.0, 0.0]], - [0.2660000000000002, [0.739899272212, 0.0, 0.0]], - [0.2680000000000002, [0.74514964268, 0.0, 0.0]], - [0.2700000000000002, [0.750400013148, 0.0, 0.0]], - [0.2720000000000002, [0.755650383616, 0.0, 0.0]], - [0.2740000000000002, [0.760900754083, 0.0, 0.0]], - [0.2760000000000002, [0.766151124551, 0.0, 0.0]], - [0.2780000000000002, [0.771401495019, 0.0, 0.0]], - [0.2800000000000002, [0.776651865487, 0.0, 0.0]], - [0.2820000000000002, [0.781902235954, 0.0, 0.0]], - [0.2840000000000002, [0.787152606422, 0.0, 0.0]], - [0.2860000000000002, [0.79240297689, 0.0, 0.0]], - [0.2880000000000002, [0.797653347358, 0.0, 0.0]], - [0.2900000000000002, [0.802903717825, 0.0, 0.0]], - [0.2920000000000002, [0.808154088293, 0.0, 0.0]], - [0.2940000000000002, [0.813404458761, 0.0, 0.0]], - [0.2960000000000002, [0.818654829229, 0.0, 0.0]], - [0.2980000000000002, [0.823905199697, 0.0, 0.0]], - [0.3000000000000002, [0.829155570164, 0.0, 0.0]], - [0.3020000000000002, [0.834405940632, 0.0, 0.0]], - [0.3040000000000002, [0.8396563111, 0.0, 0.0]], - [0.3060000000000002, [0.844906681568, 0.0, 0.0]], - [0.3080000000000002, [0.850157052035, 0.0, 0.0]], - [0.3100000000000002, [0.855407422503, 0.0, 0.0]], - [0.3120000000000002, [0.860657792971, 0.0, 0.0]], - [0.3140000000000002, [0.865908163439, 0.0, 0.0]], - [0.3160000000000002, [0.871158533906, 0.0, 0.0]], - [0.3180000000000002, [0.876408904374, 0.0, 0.0]], - [0.32000000000000023, [0.881659274842, 0.0, 0.0]], - [0.32200000000000023, [0.88690964531, 0.0, 0.0]], - [0.32400000000000023, [0.892160015777, 0.0, 0.0]], - [0.32600000000000023, [0.897410386245, 0.0, 0.0]], - [0.32800000000000024, [0.902660756713, 0.0, 0.0]], - [0.33000000000000024, [0.907911127181, 0.0, 0.0]], - [0.33200000000000024, [0.913161497648, 0.0, 0.0]], - [0.33400000000000024, [0.918411868116, 0.0, 0.0]], - [0.33600000000000024, [0.923662238584, 0.0, 0.0]], - [0.33800000000000024, [0.928912609052, 0.0, 0.0]], - [0.34000000000000025, [0.93416297952, 0.0, 0.0]], - [0.34200000000000025, [0.939413349987, 0.0, 0.0]], - [0.34400000000000025, [0.944663720455, 0.0, 0.0]], - [0.34600000000000025, [0.949914090923, 0.0, 0.0]], - [0.34800000000000025, [0.955164461391, 0.0, 0.0]], - [0.35000000000000026, [0.960414831858, 0.0, 0.0]], - [0.35200000000000026, [0.965665202326, 0.0, 0.0]], - [0.35400000000000026, [0.970915572794, 0.0, 0.0]], - [0.35600000000000026, [0.976165943262, 0.0, 0.0]], - [0.35800000000000026, [0.981416313729, 0.0, 0.0]], - [0.36000000000000026, [0.986666684197, 0.0, 0.0]], - [0.36200000000000027, [0.991917054665, 0.0, 0.0]], - [0.36400000000000027, [0.997167425133, 0.0, 0.0]], - [0.36600000000000027, [1.0, 0.00241762107137, 0.0]], - [0.36800000000000027, [1.0, 0.00766761254013, 0.0]], - [0.3700000000000003, [1.0, 0.0129176040089, 0.0]], - [0.3720000000000003, [1.0, 0.0181675954777, 0.0]], - [0.3740000000000003, [1.0, 0.0234175869464, 0.0]], - [0.3760000000000003, [1.0, 0.0286675784152, 0.0]], - [0.3780000000000003, [1.0, 0.0339175698839, 0.0]], - [0.3800000000000003, [1.0, 0.0391675613527, 0.0]], - [0.3820000000000003, [1.0, 0.0444175528215, 0.0]], - [0.3840000000000003, [1.0, 0.0496675442902, 0.0]], - [0.3860000000000003, [1.0, 0.054917535759, 0.0]], - [0.3880000000000003, [1.0, 0.0601675272278, 0.0]], - [0.3900000000000003, [1.0, 0.0654175186965, 0.0]], - [0.3920000000000003, [1.0, 0.0706675101653, 0.0]], - [0.3940000000000003, [1.0, 0.0759175016341, 0.0]], - [0.3960000000000003, [1.0, 0.0811674931028, 0.0]], - [0.3980000000000003, [1.0, 0.0864174845716, 0.0]], - [0.4000000000000003, [1.0, 0.0916674760404, 0.0]], - [0.4020000000000003, [1.0, 0.0969174675091, 0.0]], - [0.4040000000000003, [1.0, 0.102167458978, 0.0]], - [0.4060000000000003, [1.0, 0.107417450447, 0.0]], - [0.4080000000000003, [1.0, 0.112667441915, 0.0]], - [0.4100000000000003, [1.0, 0.117917433384, 0.0]], - [0.4120000000000003, [1.0, 0.123167424853, 0.0]], - [0.4140000000000003, [1.0, 0.128417416322, 0.0]], - [0.4160000000000003, [1.0, 0.13366740779, 0.0]], - [0.4180000000000003, [1.0, 0.138917399259, 0.0]], - [0.4200000000000003, [1.0, 0.144167390728, 0.0]], - [0.4220000000000003, [1.0, 0.149417382197, 0.0]], - [0.4240000000000003, [1.0, 0.154667373666, 0.0]], - [0.4260000000000003, [1.0, 0.159917365134, 0.0]], - [0.4280000000000003, [1.0, 0.165167356603, 0.0]], - [0.4300000000000003, [1.0, 0.170417348072, 0.0]], - [0.43200000000000033, [1.0, 0.175667339541, 0.0]], - [0.43400000000000033, [1.0, 0.180917331009, 0.0]], - [0.43600000000000033, [1.0, 0.186167322478, 0.0]], - [0.43800000000000033, [1.0, 0.191417313947, 0.0]], - [0.44000000000000034, [1.0, 0.196667305416, 0.0]], - [0.44200000000000034, [1.0, 0.201917296884, 0.0]], - [0.44400000000000034, [1.0, 0.207167288353, 0.0]], - [0.44600000000000034, [1.0, 0.212417279822, 0.0]], - [0.44800000000000034, [1.0, 0.217667271291, 0.0]], - [0.45000000000000034, [1.0, 0.222917262759, 0.0]], - [0.45200000000000035, [1.0, 0.228167254228, 0.0]], - [0.45400000000000035, [1.0, 0.233417245697, 0.0]], - [0.45600000000000035, [1.0, 0.238667237166, 0.0]], - [0.45800000000000035, [1.0, 0.243917228635, 0.0]], - [0.46000000000000035, [1.0, 0.249167220103, 0.0]], - [0.46200000000000035, [1.0, 0.254417211572, 0.0]], - [0.46400000000000036, [1.0, 0.259667203041, 0.0]], - [0.46600000000000036, [1.0, 0.26491719451, 0.0]], - [0.46800000000000036, [1.0, 0.270167185978, 0.0]], - [0.47000000000000036, [1.0, 0.275417177447, 0.0]], - [0.47200000000000036, [1.0, 0.280667168916, 0.0]], - [0.47400000000000037, [1.0, 0.285917160385, 0.0]], - [0.47600000000000037, [1.0, 0.291167151853, 0.0]], - [0.47800000000000037, [1.0, 0.296417143322, 0.0]], - [0.48000000000000037, [1.0, 0.301667134791, 0.0]], - [0.4820000000000004, [1.0, 0.30691712626, 0.0]], - [0.4840000000000004, [1.0, 0.312167117728, 0.0]], - [0.4860000000000004, [1.0, 0.317417109197, 0.0]], - [0.4880000000000004, [1.0, 0.322667100666, 0.0]], - [0.4900000000000004, [1.0, 0.327917092135, 0.0]], - [0.4920000000000004, [1.0, 0.333167083603, 0.0]], - [0.4940000000000004, [1.0, 0.338417075072, 0.0]], - [0.4960000000000004, [1.0, 0.343667066541, 0.0]], - [0.4980000000000004, [1.0, 0.34891705801, 0.0]], - [0.5000000000000003, [1.0, 0.354167049479, 0.0]], - [0.5020000000000003, [1.0, 0.359417040947, 0.0]], - [0.5040000000000003, [1.0, 0.364667032416, 0.0]], - [0.5060000000000003, [1.0, 0.369917023885, 0.0]], - [0.5080000000000003, [1.0, 0.375167015354, 0.0]], - [0.5100000000000003, [1.0, 0.380417006822, 0.0]], - [0.5120000000000003, [1.0, 0.385666998291, 0.0]], - [0.5140000000000003, [1.0, 0.39091698976, 0.0]], - [0.5160000000000003, [1.0, 0.396166981229, 0.0]], - [0.5180000000000003, [1.0, 0.401416972697, 0.0]], - [0.5200000000000004, [1.0, 0.406666964166, 0.0]], - [0.5220000000000004, [1.0, 0.411916955635, 0.0]], - [0.5240000000000004, [1.0, 0.417166947104, 0.0]], - [0.5260000000000004, [1.0, 0.422416938572, 0.0]], - [0.5280000000000004, [1.0, 0.427666930041, 0.0]], - [0.5300000000000004, [1.0, 0.43291692151, 0.0]], - [0.5320000000000004, [1.0, 0.438166912979, 0.0]], - [0.5340000000000004, [1.0, 0.443416904448, 0.0]], - [0.5360000000000004, [1.0, 0.448666895916, 0.0]], - [0.5380000000000004, [1.0, 0.453916887385, 0.0]], - [0.5400000000000004, [1.0, 0.459166878854, 0.0]], - [0.5420000000000004, [1.0, 0.464416870323, 0.0]], - [0.5440000000000004, [1.0, 0.469666861791, 0.0]], - [0.5460000000000004, [1.0, 0.47491685326, 0.0]], - [0.5480000000000004, [1.0, 0.480166844729, 0.0]], - [0.5500000000000004, [1.0, 0.485416836198, 0.0]], - [0.5520000000000004, [1.0, 0.490666827666, 0.0]], - [0.5540000000000004, [1.0, 0.495916819135, 0.0]], - [0.5560000000000004, [1.0, 0.501166810604, 0.0]], - [0.5580000000000004, [1.0, 0.506416802073, 0.0]], - [0.5600000000000004, [1.0, 0.511666793541, 0.0]], - [0.5620000000000004, [1.0, 0.51691678501, 0.0]], - [0.5640000000000004, [1.0, 0.522166776479, 0.0]], - [0.5660000000000004, [1.0, 0.527416767948, 0.0]], - [0.5680000000000004, [1.0, 0.532666759417, 0.0]], - [0.5700000000000004, [1.0, 0.537916750885, 0.0]], - [0.5720000000000004, [1.0, 0.543166742354, 0.0]], - [0.5740000000000004, [1.0, 0.548416733823, 0.0]], - [0.5760000000000004, [1.0, 0.553666725292, 0.0]], - [0.5780000000000004, [1.0, 0.55891671676, 0.0]], - [0.5800000000000004, [1.0, 0.564166708229, 0.0]], - [0.5820000000000004, [1.0, 0.569416699698, 0.0]], - [0.5840000000000004, [1.0, 0.574666691167, 0.0]], - [0.5860000000000004, [1.0, 0.579916682635, 0.0]], - [0.5880000000000004, [1.0, 0.585166674104, 0.0]], - [0.5900000000000004, [1.0, 0.590416665573, 0.0]], - [0.5920000000000004, [1.0, 0.595666657042, 0.0]], - [0.5940000000000004, [1.0, 0.60091664851, 0.0]], - [0.5960000000000004, [1.0, 0.606166639979, 0.0]], - [0.5980000000000004, [1.0, 0.611416631448, 0.0]], - [0.6000000000000004, [1.0, 0.616666622917, 0.0]], - [0.6020000000000004, [1.0, 0.621916614386, 0.0]], - [0.6040000000000004, [1.0, 0.627166605854, 0.0]], - [0.6060000000000004, [1.0, 0.632416597323, 0.0]], - [0.6080000000000004, [1.0, 0.637666588792, 0.0]], - [0.6100000000000004, [1.0, 0.642916580261, 0.0]], - [0.6120000000000004, [1.0, 0.648166571729, 0.0]], - [0.6140000000000004, [1.0, 0.653416563198, 0.0]], - [0.6160000000000004, [1.0, 0.658666554667, 0.0]], - [0.6180000000000004, [1.0, 0.663916546136, 0.0]], - [0.6200000000000004, [1.0, 0.669166537604, 0.0]], - [0.6220000000000004, [1.0, 0.674416529073, 0.0]], - [0.6240000000000004, [1.0, 0.679666520542, 0.0]], - [0.6260000000000004, [1.0, 0.684916512011, 0.0]], - [0.6280000000000004, [1.0, 0.690166503479, 0.0]], - [0.6300000000000004, [1.0, 0.695416494948, 0.0]], - [0.6320000000000005, [1.0, 0.700666486417, 0.0]], - [0.6340000000000005, [1.0, 0.705916477886, 0.0]], - [0.6360000000000005, [1.0, 0.711166469354, 0.0]], - [0.6380000000000005, [1.0, 0.716416460823, 0.0]], - [0.6400000000000005, [1.0, 0.721666452292, 0.0]], - [0.6420000000000005, [1.0, 0.726916443761, 0.0]], - [0.6440000000000005, [1.0, 0.73216643523, 0.0]], - [0.6460000000000005, [1.0, 0.737416426698, 0.0]], - [0.6480000000000005, [1.0, 0.742666418167, 0.0]], - [0.6500000000000005, [1.0, 0.747916409636, 0.0]], - [0.6520000000000005, [1.0, 0.753166401105, 0.0]], - [0.6540000000000005, [1.0, 0.758416392573, 0.0]], - [0.6560000000000005, [1.0, 0.763666384042, 0.0]], - [0.6580000000000005, [1.0, 0.768916375511, 0.0]], - [0.6600000000000005, [1.0, 0.77416636698, 0.0]], - [0.6620000000000005, [1.0, 0.779416358448, 0.0]], - [0.6640000000000005, [1.0, 0.784666349917, 0.0]], - [0.6660000000000005, [1.0, 0.789916341386, 0.0]], - [0.6680000000000005, [1.0, 0.795166332855, 0.0]], - [0.6700000000000005, [1.0, 0.800416324323, 0.0]], - [0.6720000000000005, [1.0, 0.805666315792, 0.0]], - [0.6740000000000005, [1.0, 0.810916307261, 0.0]], - [0.6760000000000005, [1.0, 0.81616629873, 0.0]], - [0.6780000000000005, [1.0, 0.821416290199, 0.0]], - [0.6800000000000005, [1.0, 0.826666281667, 0.0]], - [0.6820000000000005, [1.0, 0.831916273136, 0.0]], - [0.6840000000000005, [1.0, 0.837166264605, 0.0]], - [0.6860000000000005, [1.0, 0.842416256074, 0.0]], - [0.6880000000000005, [1.0, 0.847666247542, 0.0]], - [0.6900000000000005, [1.0, 0.852916239011, 0.0]], - [0.6920000000000005, [1.0, 0.85816623048, 0.0]], - [0.6940000000000005, [1.0, 0.863416221949, 0.0]], - [0.6960000000000005, [1.0, 0.868666213417, 0.0]], - [0.6980000000000005, [1.0, 0.873916204886, 0.0]], - [0.7000000000000005, [1.0, 0.879166196355, 0.0]], - [0.7020000000000005, [1.0, 0.884416187824, 0.0]], - [0.7040000000000005, [1.0, 0.889666179292, 0.0]], - [0.7060000000000005, [1.0, 0.894916170761, 0.0]], - [0.7080000000000005, [1.0, 0.90016616223, 0.0]], - [0.7100000000000005, [1.0, 0.905416153699, 0.0]], - [0.7120000000000005, [1.0, 0.910666145168, 0.0]], - [0.7140000000000005, [1.0, 0.915916136636, 0.0]], - [0.7160000000000005, [1.0, 0.921166128105, 0.0]], - [0.7180000000000005, [1.0, 0.926416119574, 0.0]], - [0.7200000000000005, [1.0, 0.931666111043, 0.0]], - [0.7220000000000005, [1.0, 0.936916102511, 0.0]], - [0.7240000000000005, [1.0, 0.94216609398, 0.0]], - [0.7260000000000005, [1.0, 0.947416085449, 0.0]], - [0.7280000000000005, [1.0, 0.952666076918, 0.0]], - [0.7300000000000005, [1.0, 0.957916068386, 0.0]], - [0.7320000000000005, [1.0, 0.963166059855, 0.0]], - [0.7340000000000005, [1.0, 0.968416051324, 0.0]], - [0.7360000000000005, [1.0, 0.973666042793, 0.0]], - [0.7380000000000005, [1.0, 0.978916034261, 0.0]], - [0.7400000000000005, [1.0, 0.98416602573, 0.0]], - [0.7420000000000005, [1.0, 0.989416017199, 0.0]], - [0.7440000000000005, [1.0, 0.994666008668, 0.0]], - [0.7460000000000006, [1.0, 0.999916000136, 0.0]], - [0.7480000000000006, [1.0, 1.0, 0.00774900774901]], - [0.7500000000000006, [1.0, 1.0, 0.015624015624]], - [0.7520000000000006, [1.0, 1.0, 0.023499023499]], - [0.7540000000000006, [1.0, 1.0, 0.031374031374]], - [0.7560000000000006, [1.0, 1.0, 0.039249039249]], - [0.7580000000000006, [1.0, 1.0, 0.047124047124]], - [0.7600000000000006, [1.0, 1.0, 0.0549990549991]], - [0.7620000000000006, [1.0, 1.0, 0.0628740628741]], - [0.7640000000000006, [1.0, 1.0, 0.0707490707491]], - [0.7660000000000006, [1.0, 1.0, 0.0786240786241]], - [0.7680000000000006, [1.0, 1.0, 0.0864990864991]], - [0.7700000000000006, [1.0, 1.0, 0.0943740943741]], - [0.7720000000000006, [1.0, 1.0, 0.102249102249]], - [0.7740000000000006, [1.0, 1.0, 0.110124110124]], - [0.7760000000000006, [1.0, 1.0, 0.117999117999]], - [0.7780000000000006, [1.0, 1.0, 0.125874125874]], - [0.7800000000000006, [1.0, 1.0, 0.133749133749]], - [0.7820000000000006, [1.0, 1.0, 0.141624141624]], - [0.7840000000000006, [1.0, 1.0, 0.149499149499]], - [0.7860000000000006, [1.0, 1.0, 0.157374157374]], - [0.7880000000000006, [1.0, 1.0, 0.165249165249]], - [0.7900000000000006, [1.0, 1.0, 0.173124173124]], - [0.7920000000000006, [1.0, 1.0, 0.180999180999]], - [0.7940000000000006, [1.0, 1.0, 0.188874188874]], - [0.7960000000000006, [1.0, 1.0, 0.196749196749]], - [0.7980000000000006, [1.0, 1.0, 0.204624204624]], - [0.8000000000000006, [1.0, 1.0, 0.212499212499]], - [0.8020000000000006, [1.0, 1.0, 0.220374220374]], - [0.8040000000000006, [1.0, 1.0, 0.228249228249]], - [0.8060000000000006, [1.0, 1.0, 0.236124236124]], - [0.8080000000000006, [1.0, 1.0, 0.243999243999]], - [0.8100000000000006, [1.0, 1.0, 0.251874251874]], - [0.8120000000000006, [1.0, 1.0, 0.259749259749]], - [0.8140000000000006, [1.0, 1.0, 0.267624267624]], - [0.8160000000000006, [1.0, 1.0, 0.275499275499]], - [0.8180000000000006, [1.0, 1.0, 0.283374283374]], - [0.8200000000000006, [1.0, 1.0, 0.291249291249]], - [0.8220000000000006, [1.0, 1.0, 0.299124299124]], - [0.8240000000000006, [1.0, 1.0, 0.306999306999]], - [0.8260000000000006, [1.0, 1.0, 0.314874314874]], - [0.8280000000000006, [1.0, 1.0, 0.322749322749]], - [0.8300000000000006, [1.0, 1.0, 0.330624330624]], - [0.8320000000000006, [1.0, 1.0, 0.338499338499]], - [0.8340000000000006, [1.0, 1.0, 0.346374346374]], - [0.8360000000000006, [1.0, 1.0, 0.354249354249]], - [0.8380000000000006, [1.0, 1.0, 0.362124362124]], - [0.8400000000000006, [1.0, 1.0, 0.369999369999]], - [0.8420000000000006, [1.0, 1.0, 0.377874377874]], - [0.8440000000000006, [1.0, 1.0, 0.385749385749]], - [0.8460000000000006, [1.0, 1.0, 0.393624393624]], - [0.8480000000000006, [1.0, 1.0, 0.401499401499]], - [0.8500000000000006, [1.0, 1.0, 0.409374409374]], - [0.8520000000000006, [1.0, 1.0, 0.417249417249]], - [0.8540000000000006, [1.0, 1.0, 0.425124425124]], - [0.8560000000000006, [1.0, 1.0, 0.432999432999]], - [0.8580000000000007, [1.0, 1.0, 0.440874440874]], - [0.8600000000000007, [1.0, 1.0, 0.448749448749]], - [0.8620000000000007, [1.0, 1.0, 0.456624456624]], - [0.8640000000000007, [1.0, 1.0, 0.464499464499]], - [0.8660000000000007, [1.0, 1.0, 0.472374472374]], - [0.8680000000000007, [1.0, 1.0, 0.480249480249]], - [0.8700000000000007, [1.0, 1.0, 0.488124488124]], - [0.8720000000000007, [1.0, 1.0, 0.495999495999]], - [0.8740000000000007, [1.0, 1.0, 0.503874503875]], - [0.8760000000000007, [1.0, 1.0, 0.51174951175]], - [0.8780000000000007, [1.0, 1.0, 0.519624519625]], - [0.8800000000000007, [1.0, 1.0, 0.5274995275]], - [0.8820000000000007, [1.0, 1.0, 0.535374535375]], - [0.8840000000000007, [1.0, 1.0, 0.54324954325]], - [0.8860000000000007, [1.0, 1.0, 0.551124551125]], - [0.8880000000000007, [1.0, 1.0, 0.558999559]], - [0.8900000000000007, [1.0, 1.0, 0.566874566875]], - [0.8920000000000007, [1.0, 1.0, 0.57474957475]], - [0.8940000000000007, [1.0, 1.0, 0.582624582625]], - [0.8960000000000007, [1.0, 1.0, 0.5904995905]], - [0.8980000000000007, [1.0, 1.0, 0.598374598375]], - [0.9000000000000007, [1.0, 1.0, 0.60624960625]], - [0.9020000000000007, [1.0, 1.0, 0.614124614125]], - [0.9040000000000007, [1.0, 1.0, 0.621999622]], - [0.9060000000000007, [1.0, 1.0, 0.629874629875]], - [0.9080000000000007, [1.0, 1.0, 0.63774963775]], - [0.9100000000000007, [1.0, 1.0, 0.645624645625]], - [0.9120000000000007, [1.0, 1.0, 0.6534996535]], - [0.9140000000000007, [1.0, 1.0, 0.661374661375]], - [0.9160000000000007, [1.0, 1.0, 0.66924966925]], - [0.9180000000000007, [1.0, 1.0, 0.677124677125]], - [0.9200000000000007, [1.0, 1.0, 0.684999685]], - [0.9220000000000007, [1.0, 1.0, 0.692874692875]], - [0.9240000000000007, [1.0, 1.0, 0.70074970075]], - [0.9260000000000007, [1.0, 1.0, 0.708624708625]], - [0.9280000000000007, [1.0, 1.0, 0.7164997165]], - [0.9300000000000007, [1.0, 1.0, 0.724374724375]], - [0.9320000000000007, [1.0, 1.0, 0.73224973225]], - [0.9340000000000007, [1.0, 1.0, 0.740124740125]], - [0.9360000000000007, [1.0, 1.0, 0.747999748]], - [0.9380000000000007, [1.0, 1.0, 0.755874755875]], - [0.9400000000000007, [1.0, 1.0, 0.76374976375]], - [0.9420000000000007, [1.0, 1.0, 0.771624771625]], - [0.9440000000000007, [1.0, 1.0, 0.7794997795]], - [0.9460000000000007, [1.0, 1.0, 0.787374787375]], - [0.9480000000000007, [1.0, 1.0, 0.79524979525]], - [0.9500000000000007, [1.0, 1.0, 0.803124803125]], - [0.9520000000000007, [1.0, 1.0, 0.810999811]], - [0.9540000000000007, [1.0, 1.0, 0.818874818875]], - [0.9560000000000007, [1.0, 1.0, 0.82674982675]], - [0.9580000000000007, [1.0, 1.0, 0.834624834625]], - [0.9600000000000007, [1.0, 1.0, 0.8424998425]], - [0.9620000000000007, [1.0, 1.0, 0.850374850375]], - [0.9640000000000007, [1.0, 1.0, 0.85824985825]], - [0.9660000000000007, [1.0, 1.0, 0.866124866125]], - [0.9680000000000007, [1.0, 1.0, 0.873999874]], - [0.9700000000000008, [1.0, 1.0, 0.881874881875]], - [0.9720000000000008, [1.0, 1.0, 0.88974988975]], - [0.9740000000000008, [1.0, 1.0, 0.897624897625]], - [0.9760000000000008, [1.0, 1.0, 0.9054999055]], - [0.9780000000000008, [1.0, 1.0, 0.913374913375]], - [0.9800000000000008, [1.0, 1.0, 0.92124992125]], - [0.9820000000000008, [1.0, 1.0, 0.929124929125]], - [0.9840000000000008, [1.0, 1.0, 0.936999937]], - [0.9860000000000008, [1.0, 1.0, 0.944874944875]], - [0.9880000000000008, [1.0, 1.0, 0.95274995275]], - [0.9900000000000008, [1.0, 1.0, 0.960624960625]], - [0.9920000000000008, [1.0, 1.0, 0.9684999685]], - [0.9940000000000008, [1.0, 1.0, 0.976374976375]], - [0.9960000000000008, [1.0, 1.0, 0.98424998425]], - [0.9980000000000008, [1.0, 1.0, 0.992124992125]], - [1.0000000000000007, [1.0, 1.0, 1.0]] -]; - -/** - * @module Utils - */ - -/** - * Clamps a number between the specified minimum and maximum values. - * @global - * @function module:Utils.clamp - * @param {number} x The number to be clamped. - * @param {number} min The minimum value of x. - * @param {number} max The maximum value of x. - * @returns {number} - */ -function clamp(x, min, max) { - return Math.max(Math.min(x, max), min); -} - -/** - * Maps a number to RGB color values. - * @global - * @function module:Utils.colormap - * @param {number} x The number to be mapped to RGB color values. - * @param {number} min The minimum value of x. - * @param {number} max The maximum value of x. - * @param {Array.>} values The colormap. The current available options - * are {@link https://matplotlib.org/examples/color/colormaps_reference.html seismic, coolwarm and hot}. - * @returns {module:LinearAlgebra.Vector} - */ -function colormap(x, min, max, values) { - x = Math.max(Math.min(x, max), min); - x = (x - min) / (max - min); - - let i = 1; - while (values[i][0] < x) i = i + 1; - i = i - 1; - - let c1 = new Vector(values[i][1][0], values[i][1][1], values[i][1][2]); - let c2 = new Vector(values[i + 1][1][0], values[i + 1][1][1], values[i + 1][1][2]); - let scaling = (x - values[i][0]) / Math.abs(values[i][0] - values[i + 1][0]); - - return c1.plus(c2.minus(c1).times(scaling)); -} - -export { - colormap, - seismic, - coolwarm, - hot -}; \ No newline at end of file diff --git a/node/utils/distortion.js b/node/utils/distortion.js deleted file mode 100644 index 4a41a95..0000000 --- a/node/utils/distortion.js +++ /dev/null @@ -1,257 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; - -/** - * This class computes the quasi conformal error and area scaling resulting from - * a parameterization algorithm. - * @memberof module:Utils - */ -class Distortion { - /** - * Computes the quasi conformal error on a face. - * @private - * @param {module:LinearAlgebra.Vector[]} p An array containing the position of each vertex in a face - * in the input mesh. - * @param {module:LinearAlgebra.Vector[]} q An array containing the position of each vertex in a face - * in the parameterized mesh. - * @returns {number} - */ - static computeQuasiConformalErrorPerFace(p, q) { - // compute edge vectors - let u1 = p[1].minus(p[0]); - let u2 = p[2].minus(p[0]); - - let v1 = q[1].minus(q[0]); - let v2 = q[2].minus(q[0]); - - // compute orthonormal bases - let e1 = new Vector(u1.x, u1.y, u1.z); - e1.normalize(); - let e2 = u2.minus(e1.times(u2.dot(e1))); - e2.normalize(); - - let f1 = new Vector(v1.x, v1.y, v1.z); - f1.normalize(); - let f2 = v2.minus(f1.times(v2.dot(f1))); - f2.normalize(); - - // project onto bases - p[0] = new Vector(); - p[1] = new Vector(u1.dot(e1), u1.dot(e2)); - p[2] = new Vector(u2.dot(e1), u2.dot(e2)); - - q[0] = new Vector(); - q[1] = new Vector(v1.dot(f1), v1.dot(f2)); - q[2] = new Vector(v2.dot(f1), v2.dot(f2)); - - let A = 2.0 * u1.cross(u2).norm(); - - let Ss = new Vector(); - for (let i = 0; i < 3; i++) Ss.incrementBy(q[i].times(p[(i + 1) % 3].y - p[(i + 2) % 3].y)); - Ss.divideBy(A); - - let St = new Vector(); - for (let i = 0; i < 3; i++) St.incrementBy(q[i].times(p[(i + 2) % 3].x - p[(i + 1) % 3].x)); - St.divideBy(A); - - let a = Ss.dot(Ss); - let b = Ss.dot(St); - let c = St.dot(St); - let det = Math.sqrt(Math.pow(a - c, 2) + 4.0 * b * b); - let Gamma = Math.sqrt(0.5 * (a + c + det)); - let gamma = Math.sqrt(0.5 * (a + c - det)); - - if (Gamma < gamma) Gamma = [gamma, gamma = Gamma][0]; - - return Gamma / gamma; - } - - /** - * Computes the average quasi conformal error resulting from a parameterization algorithm. - * Sets a color per face indicating the quasi conformal error. - * @param {module:LinearAlgebra.Vector[]} colors An array of colors per face indicating the quasi conformal error. - * @param {Object} parameterization A dictionary mapping each vertex to a vector of coordinates. - * @param {module:Core.Geometry} geometry The input geometry of the mesh which is parameterized. - * @returns {number} - */ - static computeQuasiConformalError(colors, parameterization, geometry) { - // compute total error - let totalArea = 0.0; - let totalQcError = 0.0; - let qcErrors = {}; - for (let f of geometry.mesh.faces) { - let p = []; - let q = []; - for (let v of f.adjacentVertices()) { - p.push(geometry.positions[v]); - q.push(parameterization[v]); - } - - let qcError = Distortion.computeQuasiConformalErrorPerFace(p, q); - let area = geometry.area(f); - totalArea += area; - totalQcError += qcError * area; - qcErrors[f] = Math.max(1.0, Math.min(1.5, qcError)); // clamp error between [1, 1.5] for viz - } - - // compute averaged colors - for (let v of geometry.mesh.vertices) { - let i = v.index; - - let qcError = 0.0; - for (let f of v.adjacentFaces()) qcError += qcErrors[f]; - qcError /= v.onBoundary() ? v.degree() - 1 : v.degree(); - - let color = hsv((2.0 - 4.0 * (qcError - 1.0)) / 3.0, 0.7, 0.65); - colors[3 * i + 0] = color.x; - colors[3 * i + 1] = color.y; - colors[3 * i + 2] = color.z; - } - - return totalQcError / totalArea; - } - - /** - * Computes the area scaling on a face. - * @private - * @param {module:LinearAlgebra.Vector[]} p An array containing the position of each vertex in a face - * in the input mesh. - * @param {module:LinearAlgebra.Vector[]} q An array containing the position of each vertex in a face - * in the parameterized mesh. - * @returns {number} - */ - static computeAreaScalingPerFace(p, q) { - let u1 = p[1].minus(p[0]); - let u2 = p[2].minus(p[0]); - let Area = u1.cross(u2).norm(); - - let v1 = q[1].minus(q[0]); - let v2 = q[2].minus(q[0]); - let area = v1.cross(v2).norm(); - - return Math.log(area / Area); - } - - /** - * Computes the average area scaling resulting from a parameterization algorithm. - * Sets a color per face indicating the area scaling. - * @param {module:LinearAlgebra.Vector[]} colors An array of colors per face indicating the area scaling. - * @param {Object} parameterization A dictionary mapping each vertex to a vector of coordinates. - * @param {module:Core.Geometry} geometry The input geometry of the mesh which is parameterized. - * @returns {number} - */ - static computeAreaScaling(colors, parameterization, geometry) { - // compute total scaling - let totalArea = 0.0; - let totalScaling = 0.0; - let maxScaling = 0.0; - let scalings = {}; - for (let f of geometry.mesh.faces) { - let p = []; - let q = []; - for (let v of f.adjacentVertices()) { - p.push(geometry.positions[v]); - q.push(parameterization[v]); - } - - let scaling = Distortion.computeAreaScalingPerFace(p, q); - let area = geometry.area(f); - totalArea += area; - totalScaling += scaling * area; - maxScaling = Math.max(maxScaling, Math.abs(scaling)); - scalings[f] = scaling; - } - - // compute averaged colors - for (let v of geometry.mesh.vertices) { - let i = v.index; - - let scaling = 0.0; - for (let f of v.adjacentFaces()) scaling += scalings[f]; - scaling /= v.onBoundary() ? v.degree() - 1 : v.degree(); - - let color = colormap(scaling, -maxScaling, maxScaling, seismic); - colors[3 * i + 0] = color.x; - colors[3 * i + 1] = color.y; - colors[3 * i + 2] = color.z; - } - - return totalScaling / totalArea; - } -} - -/** - * Computes the hue, saturation, and value of the RGB color model. - * @global - * @function module:Utils.hsv - * @param {number} h The hue of the RGB color model. - * @param {number} s The saturation of the RGB color model. - * @param {number} v The value of the RGB color model. - * @returns {module:LinearAlgebra.Vector} - */ -function hsv(h, s, v) { - let r = 0; - let g = 0; - let b = 0; - - if (s == 0) { - r = v; - g = v; - b = v; - - } else { - h = (h == 1 ? 0 : h) * 6; - - let i = Math.floor(h); - - let f = h - i; - let p = v * (1 - s); - let q = v * (1 - (s * f)); - let t = v * (1 - s * (1 - f)); - - switch (i) { - case 0: - r = v; - g = t; - b = p; - break; - - case 1: - r = q; - g = v; - b = p; - break; - - case 2: - r = p; - g = v; - b = t; - break; - - case 3: - r = p; - g = q; - b = v; - break; - - case 4: - r = t; - g = p; - b = v; - break; - - case 5: - r = v; - g = p; - b = q; - break; - - default: - break; - } - } - - return new Vector(r, g, b); -} - -export default Distortion; \ No newline at end of file diff --git a/node/utils/meshio.js b/node/utils/meshio.js deleted file mode 100644 index 2c8d96a..0000000 --- a/node/utils/meshio.js +++ /dev/null @@ -1,94 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let Vector = LinearAlgebra.Vector; - -/** - * This class converts text from 3D file formats such as OBJ to a polygon soup mesh - * and vice versa. - * @memberof module:Utils - */ -class MeshIO { - /** - * Converts text from an OBJ file to a polygon soup mesh. - * @static - * @param {string} input The text from an OBJ file containing vertex positions - * and indices. - * @returns {Object} A polygon soup mesh containing vertex positions and indices. - * Vertex positions and indices are keyed by "v" and "f" respectively. - */ - static readOBJ(input) { - let lines = input.split("\n"); - let positions = []; - let indices = []; - - for (let line of lines) { - line = line.trim(); - let tokens = line.split(" "); - let identifier = tokens[0].trim(); - - if (identifier === "v") { - positions.push(new Vector(parseFloat(tokens[1]), parseFloat(tokens[2]), parseFloat(tokens[3]))); - - } else if (identifier === "f") { - if (tokens.length > 4) { - alert("Only triangle meshes are supported at this time!"); - return undefined; - } - - for (let i = 1; i < tokens.length; i++) { - let index = (tokens[i].split("/")[0]).trim(); - indices.push(parseInt(index) - 1); - } - } - } - - return { - "v": positions, - "f": indices - }; - } - - /** - * Converts a polygon soup mesh to the OBJ file format. - * @static - * @param {Object} polygonSoup A polygon soup mesh containing vertex positions - * and indices. Texture coordinates and normals are optional. - * @param {module:LinearAlgebra.Vector[]} polygonSoup.v The vertex positions of the polygon soup mesh. - * @param {module:LinearAlgebra.Vector[]} polygonSoup.vt The texture coordinates of the polygon soup mesh. - * @param {module:LinearAlgebra.Vector[]} polygonSoup.vn The normals of the polygon soup mesh. - * @param {number[]} polygonSoup.f The indices of the polygon soup mesh. - * @returns {string} Text containing vertex positions, texture coordinates, normals - * and indices in the OBJ format. - */ - static writeOBJ(polygonSoup) { - let output = ""; - - // write positions - let positions = polygonSoup["v"]; - let uvs = polygonSoup["vt"]; - let normals = polygonSoup["vn"]; - for (let i = 0; i < positions.length / 3; i++) { - output += "v " + positions[3 * i + 0] + " " + positions[3 * i + 1] + " " + positions[3 * i + 2] + "\n"; - if (uvs) output += "vt " + uvs[3 * i + 0] + " " + uvs[3 * i + 1] + "\n"; - if (normals) output += "vn " + normals[3 * i + 0] + " " + normals[3 * i + 1] + " " + normals[3 * i + 2] + "\n"; - } - - // write indices - let indices = polygonSoup["f"]; - for (let i = 0; i < indices.length; i += 3) { - output += "f "; - for (let j = 0; j < 3; j++) { - let index = indices[i + j] + 1; - output += index; - if (uvs) output += "/" + index; - if (!uvs && normals) output += "/"; - if (normals) output += "/" + index; - output += " "; - } - output += "\n"; - } - - return output; - } -} - -export default MeshIO; \ No newline at end of file diff --git a/node/utils/solvers.js b/node/utils/solvers.js deleted file mode 100644 index d3cf46f..0000000 --- a/node/utils/solvers.js +++ /dev/null @@ -1,81 +0,0 @@ -import LinearAlgebra from '../linear-algebra/linear-algebra.js'; -let Complex = LinearAlgebra.Complex; -let ComplexDenseMatrix = LinearAlgebra.ComplexDenseMatrix; - -/** - * This class implements frequently used numerical algorithms such as the inverse power method. - * @memberof module:Utils - */ -class Solvers { - /** - * Computes the residual of Ax - λx, where x has unit norm and λ = x.Ax. - * @param {module:LinearAlgebra.ComplexSparseMatrix} A The complex sparse matrix whose eigen decomposition - * is being computed. - * @param {module:LinearAlgebra.ComplexDenseMatrix} x The current guess for the smallest eigenvector - * (corresponding to the smallest eigenvalue λ) of A. - * @returns {number} - */ - static residual(A, x) { - let Ax = A.timesDense(x); - let xH = x.transpose().conjugate(); - let xHAx = xH.timesDense(Ax).get(0, 0); - let xHx = xH.timesDense(x).get(0, 0); - let lambda = xHAx.overComplex(xHx); - - return Ax.minus(x.timesComplex(lambda)).get(0, 0).norm(2) / x.norm(2); - } - - /** - * Solves Ax = λx, where λ is the smallest nonzero eigenvalue of A and x is the - * corresponding eigenvector. x should be initialized to a random complex dense - * vector (i.e., x.nCols() == 1). - * @param {module:LinearAlgebra.ComplexSparseMatrix} A The complex positive definite sparse matrix - * whose eigen decomposition needs to be computed. - * @returns {module:LinearAlgebra.ComplexDenseMatrix} The smallest eigenvector (corresponding to the - * smallest eigenvalue λ) of A. - */ - static solveInversePowerMethod(A) { - // compute prefactorization - let N = A.nRows(); - let llt = A.chol(); - let ones = ComplexDenseMatrix.ones(N, 1); - let x = ComplexDenseMatrix.random(N, 1); - - do { - x = llt.solvePositiveDefinite(x); - - // subtract mean - let mean = x.sum().overReal(N); - x.decrementBy(ones.timesComplex(mean)); - - // normalize - x.scaleBy(new Complex(1.0 / x.norm(2))); - - } while (Solvers.residual(A, x) > 1e-10); - - return x; - } - - /** - * Inverts a 2x2 matrix. - * @param {module:LinearAlgebra.DenseMatrix} m The matrix to be inverted. - * @returns {module:LinearAlgebra.DenseMatrix} - */ - static invert2x2(m) { - let m00 = m.get(0, 0); - let m01 = m.get(0, 1); - let m10 = m.get(1, 0); - let m11 = m.get(1, 1); - - let det = m00 * m11 - m01 * m10; - m.set(m11, 0, 0); - m.set(m00, 1, 1); - m.set(-m01, 0, 1); - m.set(-m10, 1, 0); - m.scaleBy(1.0 / det); - - return m; - } -} - -export default Solvers; \ No newline at end of file From 222e9817cc5a9830274beeefae839a42f41f5ceb Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 19:09:55 -0800 Subject: [PATCH 06/33] Fix MemoryManager Export and Imports --- input/bunny.js | 2 ++ input/hexagon.js | 2 ++ input/small_bunny.js | 2 ++ input/small_disk.js | 2 ++ linear-algebra/complex-dense-matrix.js | 2 +- linear-algebra/complex-sparse-matrix.js | 2 +- linear-algebra/complex.js | 2 +- linear-algebra/dense-matrix.js | 2 +- linear-algebra/emscripten-memory-manager.js | 3 ++- linear-algebra/linear-algebra-asm.js | 2 +- linear-algebra/linear-algebra.js | 4 ++-- linear-algebra/sparse-matrix.js | 2 +- 12 files changed, 18 insertions(+), 9 deletions(-) diff --git a/input/bunny.js b/input/bunny.js index 748157d..8e031e1 100644 --- a/input/bunny.js +++ b/input/bunny.js @@ -42865,3 +42865,5 @@ f 9657 977 9627 f 7220 2711 2710 f 3210 11164 11749 ` + +export default bunny; \ No newline at end of file diff --git a/input/hexagon.js b/input/hexagon.js index bf2bc86..18a8fa6 100644 --- a/input/hexagon.js +++ b/input/hexagon.js @@ -9311,3 +9311,5 @@ f 816 3168 3167 f 817 3169 3168 f 815 3167 3169 f 3168 3169 3167`; + +export default hexagon; \ No newline at end of file diff --git a/input/small_bunny.js b/input/small_bunny.js index 94ee3b4..966f964 100644 --- a/input/small_bunny.js +++ b/input/small_bunny.js @@ -8406,3 +8406,5 @@ f 888//4114 263//4114 239//4114 f 322//4115 908//4116 99//4117 f 394//4118 393//4118 998//4118 `; + +export default small_bunny; \ No newline at end of file diff --git a/input/small_disk.js b/input/small_disk.js index c400512..a1b1a13 100644 --- a/input/small_disk.js +++ b/input/small_disk.js @@ -47,3 +47,5 @@ f 19//1 16//1 18//1 f 12//1 16//1 19//1 f 13//1 12//1 19//1 `; + +export default small_disk; \ No newline at end of file diff --git a/linear-algebra/complex-dense-matrix.js b/linear-algebra/complex-dense-matrix.js index 3bf9047..3f228be 100644 --- a/linear-algebra/complex-dense-matrix.js +++ b/linear-algebra/complex-dense-matrix.js @@ -1,5 +1,5 @@ import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; import Complex from './complex.js'; class ComplexDenseMatrix { diff --git a/linear-algebra/complex-sparse-matrix.js b/linear-algebra/complex-sparse-matrix.js index f4d1de1..5167fe2 100644 --- a/linear-algebra/complex-sparse-matrix.js +++ b/linear-algebra/complex-sparse-matrix.js @@ -1,5 +1,5 @@ import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; import ComplexDenseMatrix from './complex-dense-matrix.js'; class ComplexSparseMatrix { diff --git a/linear-algebra/complex.js b/linear-algebra/complex.js index 8bbae15..078da35 100644 --- a/linear-algebra/complex.js +++ b/linear-algebra/complex.js @@ -1,5 +1,5 @@ import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; class Complex { /** diff --git a/linear-algebra/dense-matrix.js b/linear-algebra/dense-matrix.js index 494f98e..329ccff 100644 --- a/linear-algebra/dense-matrix.js +++ b/linear-algebra/dense-matrix.js @@ -1,5 +1,5 @@ import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; class DenseMatrix { /** diff --git a/linear-algebra/emscripten-memory-manager.js b/linear-algebra/emscripten-memory-manager.js index 16b0e65..4e3f57e 100644 --- a/linear-algebra/emscripten-memory-manager.js +++ b/linear-algebra/emscripten-memory-manager.js @@ -52,4 +52,5 @@ class EmscriptenMemoryManager { } } -module.exports = new EmscriptenMemoryManager() \ No newline at end of file +export let memoryManager = new EmscriptenMemoryManager(); +export default EmscriptenMemoryManager; \ No newline at end of file diff --git a/linear-algebra/linear-algebra-asm.js b/linear-algebra/linear-algebra-asm.js index f16b84d..2bb9645 100644 --- a/linear-algebra/linear-algebra-asm.js +++ b/linear-algebra/linear-algebra-asm.js @@ -19,7 +19,7 @@ var Jc=[ZF,zv,Fv,Aw,Bw,Kw,Lw,ZF];var Kc=[_F,Sw,Yw,_F];var Lc=[$F,rB,AB,TB,Wk,bl, // EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module["stackSave"]=asm["stackSave"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var __GLOBAL__sub_I_embind_cpp=Module["__GLOBAL__sub_I_embind_cpp"]=asm["__GLOBAL__sub_I_embind_cpp"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=asm["_pthread_mutex_unlock"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=asm["_pthread_cond_broadcast"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _memmove=Module["_memmove"]=asm["_memmove"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=asm["_pthread_mutex_lock"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memset=Module["_memset"]=asm["_memset"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidd=Module["dynCall_iidd"]=asm["dynCall_iidd"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_iiiid=Module["dynCall_iiiid"]=asm["dynCall_iiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];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_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;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"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){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(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}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() +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module["stackSave"]=asm["stackSave"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var ___cxa_demangle=Module["___cxa_demangle"]=asm["___cxa_demangle"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var __GLOBAL__sub_I_embind_cpp=Module["__GLOBAL__sub_I_embind_cpp"]=asm["__GLOBAL__sub_I_embind_cpp"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var __GLOBAL__sub_I_bind_cpp=Module["__GLOBAL__sub_I_bind_cpp"]=asm["__GLOBAL__sub_I_bind_cpp"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=asm["_pthread_mutex_unlock"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=asm["_pthread_cond_broadcast"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];/*var _free=Module["_free"]=asm["_free"];*/var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _memmove=Module["_memmove"]=asm["_memmove"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];/*var _malloc=Module["_malloc"]=asm["_malloc"];*/var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=asm["_pthread_mutex_lock"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memset=Module["_memset"]=asm["_memset"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iidd=Module["dynCall_iidd"]=asm["dynCall_iidd"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iiid=Module["dynCall_iiid"]=asm["dynCall_iiid"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_iiiid=Module["dynCall_iiiid"]=asm["dynCall_iiiid"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];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_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;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"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){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(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}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() export default Module; diff --git a/linear-algebra/linear-algebra.js b/linear-algebra/linear-algebra.js index ccbd85d..5eaf2be 100644 --- a/linear-algebra/linear-algebra.js +++ b/linear-algebra/linear-algebra.js @@ -1,8 +1,8 @@ import Vector from './vector.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; import Complex from './complex.js'; import DenseMatrix from './dense-matrix.js'; -import ComplexDenseMatrix from' ./complex-dense-matrix.js'; +import ComplexDenseMatrix from './complex-dense-matrix.js'; import { SparseMatrix, Triplet } from './sparse-matrix.js'; import { ComplexSparseMatrix, ComplexTriplet } from './complex-sparse-matrix.js'; diff --git a/linear-algebra/sparse-matrix.js b/linear-algebra/sparse-matrix.js index 1a656a0..3a90109 100644 --- a/linear-algebra/sparse-matrix.js +++ b/linear-algebra/sparse-matrix.js @@ -1,5 +1,5 @@ import Module from './linear-algebra-asm.js'; -import memoryManager from './emscripten-memory-manager.js'; +import { memoryManager } from './emscripten-memory-manager.js'; import DenseMatrix from './dense-matrix.js'; class SparseMatrix { From dc3d95d8772814249d19c16e7c948c0147e2da1c Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 19:35:25 -0800 Subject: [PATCH 07/33] Switch Direction Field to ES6 Modules; Update Three.js Something is funny with the sensitivity on TrackballControls.. --- libs/trackball-controls.js | 58 +++++++++------- projects/direction-field-design/index.html | 78 +++++++++++++--------- 2 files changed, 79 insertions(+), 57 deletions(-) diff --git a/libs/trackball-controls.js b/libs/trackball-controls.js index cb335f4..709a9ec 100755 --- a/libs/trackball-controls.js +++ b/libs/trackball-controls.js @@ -5,7 +5,15 @@ * @author Luca Antiga / http://lantiga.github.io */ -THREE.TrackballControls = function(object, domElement) { +import { + EventDispatcher, + MOUSE, + Quaternion, + Vector2, + Vector3 +} from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/87/three.module.js'; + +var TrackballControls = function(object, domElement) { var _this = this; var STATE = { @@ -49,31 +57,31 @@ THREE.TrackballControls = function(object, domElement) { // internals - this.target = new THREE.Vector3(); + this.target = new Vector3(); var EPS = 0.000001; - var lastPosition = new THREE.Vector3(); + var lastPosition = new Vector3(); var _state = STATE.NONE, _prevState = STATE.NONE, - _eye = new THREE.Vector3(), + _eye = new Vector3(), - _movePrev = new THREE.Vector2(), - _moveCurr = new THREE.Vector2(), + _movePrev = new Vector2(), + _moveCurr = new Vector2(), - _lastAxis = new THREE.Vector3(), + _lastAxis = new Vector3(), _lastAngle = 0, - _zoomStart = new THREE.Vector2(), - _zoomEnd = new THREE.Vector2(), + _zoomStart = new Vector2(), + _zoomEnd = new Vector2(), _touchZoomDistanceStart = 0, _touchZoomDistanceEnd = 0, - _panStart = new THREE.Vector2(), - _panEnd = new THREE.Vector2(); + _panStart = new Vector2(), + _panEnd = new Vector2(); // for reset @@ -131,7 +139,7 @@ THREE.TrackballControls = function(object, domElement) { var getMouseOnScreen = (function() { - var vector = new THREE.Vector2(); + var vector = new Vector2(); return function getMouseOnScreen(pageX, pageY) { @@ -148,7 +156,7 @@ THREE.TrackballControls = function(object, domElement) { var getMouseOnCircle = (function() { - var vector = new THREE.Vector2(); + var vector = new Vector2(); return function getMouseOnCircle(pageX, pageY) { @@ -165,12 +173,12 @@ THREE.TrackballControls = function(object, domElement) { this.rotateCamera = (function() { - var axis = new THREE.Vector3(), - quaternion = new THREE.Quaternion(), - eyeDirection = new THREE.Vector3(), - objectUpDirection = new THREE.Vector3(), - objectSidewaysDirection = new THREE.Vector3(), - moveDirection = new THREE.Vector3(), + var axis = new Vector3(), + quaternion = new Quaternion(), + eyeDirection = new Vector3(), + objectUpDirection = new Vector3(), + objectSidewaysDirection = new Vector3(), + moveDirection = new Vector3(), angle; return function rotateCamera() { @@ -255,9 +263,9 @@ THREE.TrackballControls = function(object, domElement) { this.panCamera = (function() { - var mouseChange = new THREE.Vector2(), - objectUp = new THREE.Vector3(), - pan = new THREE.Vector3(); + var mouseChange = new Vector2(), + objectUp = new Vector3(), + pan = new Vector3(); return function panCamera() { @@ -637,5 +645,7 @@ THREE.TrackballControls = function(object, domElement) { }; -THREE.TrackballControls.prototype = Object.create(THREE.EventDispatcher.prototype); -THREE.TrackballControls.prototype.constructor = THREE.TrackballControls; +TrackballControls.prototype = Object.create(EventDispatcher.prototype); +TrackballControls.prototype.constructor = TrackballControls; + +export { TrackballControls }; \ No newline at end of file diff --git a/projects/direction-field-design/index.html b/projects/direction-field-design/index.html index 87939ef..f7baf95 100644 --- a/projects/direction-field-design/index.html +++ b/projects/direction-field-design/index.html @@ -21,31 +21,42 @@

Direction Field Design

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/projects/simplicial-complex-operators/setup.js b/projects/simplicial-complex-operators/setup.js index 3db1123..64da294 100644 --- a/projects/simplicial-complex-operators/setup.js +++ b/projects/simplicial-complex-operators/setup.js @@ -1,4 +1,39 @@ -if (!Detector.webgl) Detector.addGetWebGLMessage(); +import * as THREE from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r125/three.module.min.js' +import dat from 'https://threejs.org/examples/jsm/libs/dat.gui.module.js'; +import { TrackballControls } from 'https://threejs.org/examples/jsm/controls/TrackballControls.js'; +import { WEBGL } from 'https://threejs.org/examples/jsm/WebGL.js'; + +import SimplicialComplexOperators from "./simplicial-complex-operators.js"; +import Vector from "../../linear-algebra/vector.js"; +import EmscriptenMemoryManager from "../../linear-algebra/emscripten-memory-manager.js"; +import { Mesh } from "../../core/mesh.js"; +import { Geometry } from "../../core/geometry.js"; +import MeshSubset from "../../core/mesh-subset.js"; +//import Vertex from "../../core/vertex.js"; +//import Edge from "../../core/edge.js"; +//import Face from "../../core/face.js"; +//import HalfEdge from "../../core/halfedge.js"; +//import Corner from "../../core/corner.js"; +import small_disk from "../../input/small_disk.js"; +import MeshIO from "../../utils/meshio.js"; +//import { colormap, seismic, coolwarm, hot } from "../../utils/colormap.js"; +//import Distortion from "../../utils/distortion.js"; + +// Unused Imports +//import DenseMatrix from "../../linear-algebra/dense-matrix.js"; +//import SparseMatrix from "../../linear-algebra/sparse-matrix.js"; +//import DEC from "../../core/discrete-exterior-calculus.js"; + +// Warn the user if WebGL is not Available +if (!WEBGL.isWebGLAvailable()){ + var parent, id, element; + let parameters = null || {}; + parent = parameters.parent !== undefined ? parameters.parent : document.body; + id = parameters.id !== undefined ? parameters.id : 'oldie'; + element = WEBGL.getWebGLErrorMessage(); + element.id = id; + parent.appendChild( element ); +} let input = document.getElementById("fileInput"); let renderer = undefined; @@ -361,9 +396,9 @@ function initThreeMesh() { // set geometry threeGeometry.setIndex(new THREE.BufferAttribute(indices, 1)); - threeGeometry.addAttribute("position", new THREE.BufferAttribute(positions, 3)); - threeGeometry.addAttribute("normal", new THREE.BufferAttribute(normals, 3)); - threeGeometry.addAttribute("color", new THREE.BufferAttribute(colors, 3)); + threeGeometry.setAttribute("position", new THREE.BufferAttribute(positions, 3)); + threeGeometry.setAttribute("normal", new THREE.BufferAttribute(normals, 3)); + threeGeometry.setAttribute("color", new THREE.BufferAttribute(colors, 3)); // create material let threeMaterial = new THREE.MeshPhongMaterial(materialSettings); @@ -522,8 +557,8 @@ function initThreePickMesh() { } // set geometry - threePickGeometry.addAttribute("position", new THREE.BufferAttribute(pickPositions, 3)); - threePickGeometry.addAttribute("color", new THREE.BufferAttribute(pickColors, 3)); + threePickGeometry.setAttribute("position", new THREE.BufferAttribute(pickPositions, 3)); + threePickGeometry.setAttribute("color", new THREE.BufferAttribute(pickColors, 3)); // create material let threePickMaterial = new THREE.MeshBasicMaterial({ @@ -592,12 +627,15 @@ function initFaceMesh(id) { let p2Minus = shrunk_p2.minus(normal.times(offset)); let p3Minus = shrunk_p3.minus(normal.times(offset)); - let threeGeometry = new THREE.Geometry(); - threeGeometry.vertices.push(toThreeVector(p1Minus)); - threeGeometry.vertices.push(toThreeVector(p2Minus)); - threeGeometry.vertices.push(toThreeVector(p3Minus)); - threeGeometry.faces.push(new THREE.Face3(0, 1, 2)); - threeGeometry.computeFaceNormals(); + let threeGeometry = new THREE.BufferGeometry(); + let verts = [toThreeVector(p1Minus), toThreeVector(p2Minus), toThreeVector(p3Minus)]; + let threeGeometryVertices = new Float32Array( [ + verts[0].x, verts[0].y, verts[0].z, + verts[1].x, verts[1].y, verts[1].z, + verts[2].x, verts[2].y, verts[2].z + ] ); + threeGeometry.setAttribute('position', new THREE.BufferAttribute(threeGeometryVertices, 3)); + threeGeometry.computeVertexNormals(); // create mesh let material = new THREE.MeshPhongMaterial({color: selectedColor}); @@ -633,7 +671,7 @@ function deleteFaceMesh(id) { } function initControls() { - controls = new THREE.TrackballControls(camera, renderer.domElement); + controls = new TrackballControls(camera, renderer.domElement); controls.rotateSpeed = 5.0; } @@ -663,7 +701,8 @@ function pick(clickX, clickY) { // draw let pickTarget = new THREE.WebGLRenderTarget(window.innerWidth, window.innerHeight); pickTarget.texture.generateMipmaps = false; - pickRenderer.render(pickScene, camera, pickTarget); + pickRenderer.setRenderTarget(pickTarget); + pickRenderer.render(pickScene, camera); // read color let pixelBuffer = new Uint8Array(4); @@ -712,4 +751,4 @@ function displayMeshSubset() { function toThreeVector(v) { return new THREE.Vector3(v.x, v.y, v.z); -} +} \ No newline at end of file diff --git a/projects/simplicial-complex-operators/simplicial-complex-operators.js b/projects/simplicial-complex-operators/simplicial-complex-operators.js index a40fe43..ba6db26 100644 --- a/projects/simplicial-complex-operators/simplicial-complex-operators.js +++ b/projects/simplicial-complex-operators/simplicial-complex-operators.js @@ -1,4 +1,6 @@ -"use strict"; +import { SparseMatrix, Triplet } from "../../linear-algebra/sparse-matrix.js"; +import MeshSubset from "../../core/mesh-subset.js"; +import DenseMatrix from "../../linear-algebra/dense-matrix.js"; class SimplicialComplexOperators { @@ -297,3 +299,5 @@ class SimplicialComplexOperators { return this.closure(boundary); } } + +export default SimplicialComplexOperators; \ No newline at end of file From b4b45acd34d3f2d952c7b7b8f9d458cbf86c1809 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Fri, 12 Feb 2021 20:41:36 -0800 Subject: [PATCH 15/33] Update Vector Field Decomposition to ES6 --- .../vector-field-decomposition/index.html | 88 +++++++++++-------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/projects/vector-field-decomposition/index.html b/projects/vector-field-decomposition/index.html index 0233a31..7a037aa 100644 --- a/projects/vector-field-decomposition/index.html +++ b/projects/vector-field-decomposition/index.html @@ -21,31 +21,45 @@

Vector Field Decomposition

geometry processing js logo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/direction-field-design/test.js b/tests/direction-field-design/test.js index 6aab454..b0a546a 100644 --- a/tests/direction-field-design/test.js +++ b/tests/direction-field-design/test.js @@ -1,4 +1,12 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import TrivialConnections from '../../projects/direction-field-design/trivial-connections.js'; describe("TrivialConnections", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -6,7 +14,7 @@ describe("TrivialConnections", function() { mesh.build(polygonSoup); let geometry = new Geometry(mesh, polygonSoup["v"], false); let E = mesh.edges.length; - let trivialConnections, singularity, deltaBeta, gamma; + let trivialConnections, deltaBeta, gamma; describe("computeCoExactComponent", function() { it("computes the dual 0-form potential", function() { @@ -105,4 +113,4 @@ describe("TrivialConnections", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/discrete-exterior-calculus/test.html b/tests/discrete-exterior-calculus/test.html deleted file mode 100644 index ac74872..0000000 --- a/tests/discrete-exterior-calculus/test.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/discrete-exterior-calculus/test.js b/tests/discrete-exterior-calculus/test.js index 1c80094..6c2a305 100644 --- a/tests/discrete-exterior-calculus/test.js +++ b/tests/discrete-exterior-calculus/test.js @@ -1,4 +1,12 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh, indexElements } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import DEC from '../../core/discrete-exterior-calculus.js'; describe("DEC", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -191,4 +199,4 @@ describe("DEC", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/geodesic-distance/test.html b/tests/geodesic-distance/test.html deleted file mode 100644 index 5674b8d..0000000 --- a/tests/geodesic-distance/test.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - \ No newline at end of file diff --git a/tests/geodesic-distance/test.js b/tests/geodesic-distance/test.js index 50ec5b6..c8b850b 100644 --- a/tests/geodesic-distance/test.js +++ b/tests/geodesic-distance/test.js @@ -1,4 +1,13 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import HeatMethod from '../../projects/geodesic-distance/heat-method.js'; describe("HeatMethod", function() { let polygonSoup = MeshIO.readOBJ(solution); diff --git a/tests/geometric-flow/test.html b/tests/geometric-flow/test.html deleted file mode 100644 index c3b564e..0000000 --- a/tests/geometric-flow/test.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/geometric-flow/test.js b/tests/geometric-flow/test.js index 5e31d1e..961ebb3 100644 --- a/tests/geometric-flow/test.js +++ b/tests/geometric-flow/test.js @@ -1,4 +1,13 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let memoryManager = LinearAlgebra.memoryManager; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import MeanCurvatureFlow from '../../projects/geometric-flow/mean-curvature-flow.js'; +import ModifiedMeanCurvatureFlow from '../../projects/geometric-flow/modified-mean-curvature-flow.js'; describe("MeanCurvatureFlow", function() { let steps, h; @@ -96,4 +105,4 @@ describe("MeanCurvatureFlow", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/geometry/test.html b/tests/geometry/test.html deleted file mode 100644 index eafe378..0000000 --- a/tests/geometry/test.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/geometry/test.js b/tests/geometry/test.js index 2daeaf5..02e9e35 100644 --- a/tests/geometry/test.js +++ b/tests/geometry/test.js @@ -1,4 +1,14 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +let SparseMatrix = LinearAlgebra.SparseMatrix; +let Triplet = LinearAlgebra.Triplet; +import MeshIO from '../../utils/meshio.js'; +import { Mesh, indexElements } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; describe("Geometry", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -331,4 +341,4 @@ describe("Geometry", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/linear-algebra/test.html b/tests/linear-algebra/test.html deleted file mode 100644 index 0ecd976..0000000 --- a/tests/linear-algebra/test.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/linear-algebra/test.js b/tests/linear-algebra/test.js index 387e317..c06fcc9 100644 --- a/tests/linear-algebra/test.js +++ b/tests/linear-algebra/test.js @@ -1,4 +1,14 @@ -"use strict"; +import chai from 'chai'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let memoryManager = LinearAlgebra.memoryManager; +let Complex = LinearAlgebra.Complex; +let DenseMatrix = LinearAlgebra.DenseMatrix; +let SparseMatrix = LinearAlgebra.SparseMatrix; +let Triplet = LinearAlgebra.Triplet; +let ComplexDenseMatrix = LinearAlgebra.ComplexDenseMatrix; +let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; +let ComplexTriplet = LinearAlgebra.ComplexTriplet; describe("Vector", function() { let u = new Vector(3, 4, 0); @@ -1721,4 +1731,4 @@ describe("ComplexSparseMatrix", function() { chai.assert.strictEqual(success, true); }); }); -}); +}); \ No newline at end of file diff --git a/tests/mesh/test.html b/tests/mesh/test.html deleted file mode 100644 index 819ffdd..0000000 --- a/tests/mesh/test.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - -
- - - diff --git a/tests/mesh/test.js b/tests/mesh/test.js index 6fc4413..4e7c44f 100644 --- a/tests/mesh/test.js +++ b/tests/mesh/test.js @@ -1,37 +1,12 @@ -"use strict"; +import chai from 'chai'; +import faceMesh from '../../input/face.js'; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; -let input = document.getElementById("fileInput"); -input.addEventListener("change", function(e) { - let file = input.files[0]; - - if (file.name.endsWith(".obj")) { - let reader = new FileReader(); - - reader.onload = function(e) { - setupTests(reader.result); - mocha.run(); - - // NOTE: Disabling and hiding input tag because mocha does not - // allow reruns. Reload page to run tests with different file. - input.disabled = true; - input.hidden = true; - } - - reader.onerror = function(e) { - alert("Unable to load OBJ file"); - } - - reader.readAsText(file); - - } else { - alert("Please load an OBJ file"); - } -}); - -function setupTests(text) { +describe("Mesh", function() { let polygonSoup = undefined; describe("MeshIO.readOBJ", function() { - polygonSoup = MeshIO.readOBJ(text); + polygonSoup = MeshIO.readOBJ(faceMesh); it("loads a polygon soup", function() { chai.assert.notStrictEqual(polygonSoup, undefined); }); @@ -345,4 +320,4 @@ function setupTests(text) { chai.assert.strictEqual(success, true); }); }); -} \ No newline at end of file +}); \ No newline at end of file diff --git a/tests/parameterization/test.html b/tests/parameterization/test.html deleted file mode 100644 index 6dec277..0000000 --- a/tests/parameterization/test.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/parameterization/test.js b/tests/parameterization/test.js index 782eab0..d0aa85c 100644 --- a/tests/parameterization/test.js +++ b/tests/parameterization/test.js @@ -1,4 +1,15 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let Vector = LinearAlgebra.Vector; +let memoryManager = LinearAlgebra.memoryManager; +let Complex = LinearAlgebra.Complex; +let ComplexSparseMatrix = LinearAlgebra.ComplexSparseMatrix; +let ComplexTriplet = LinearAlgebra.ComplexTriplet; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import SpectralConformalParameterization from '../../projects/parameterization/spectral-conformal-parameterization.js'; describe("SpectralConformalParameterization", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -71,4 +82,4 @@ describe("SpectralConformalParameterization", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/poisson-problem/test.html b/tests/poisson-problem/test.html deleted file mode 100644 index 844bf85..0000000 --- a/tests/poisson-problem/test.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/poisson-problem/test.js b/tests/poisson-problem/test.js index f9b2b7d..9e4066b 100644 --- a/tests/poisson-problem/test.js +++ b/tests/poisson-problem/test.js @@ -1,4 +1,12 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import ScalarPoissonProblem from '../../projects/poisson-problem/scalar-poisson-problem.js'; describe("ScalarPoissonProblem", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -40,4 +48,4 @@ describe("ScalarPoissonProblem", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file diff --git a/tests/simplicial-complex-operators/solution.js b/tests/simplicial-complex-operators/solution.js index 4d72ce5..743ef18 100644 --- a/tests/simplicial-complex-operators/solution.js +++ b/tests/simplicial-complex-operators/solution.js @@ -1,3 +1,6 @@ +import MeshSubset from "../../core/mesh-subset.js" +import SimplicialComplexOperators from "../../projects/simplicial-complex-operators/simplicial-complex-operators.js"; +import { memoryManager } from "../../linear-algebra/emscripten-memory-manager.js" class SubcomplexOperationTest { // the lists of mesh elements are given as lists of indices. The indices are the positions of those mesh // elements in their corresponding lists in the mesh, not the indices assigned by some SimplicialComplexOperators object @@ -191,3 +194,14 @@ let faceDegreeTest = new SubcomplexFunctionTest("isPureComplex", [], [], [ let faceEdgesDegreeTest = new SubcomplexFunctionTest("isPureComplex", [], [1638, 1434, 2090], [1261], -1); let closedFaceDegreeTest = new SubcomplexFunctionTest("isPureComplex", [593, 731, 850], [1638, 1434, 2090], [1261], 2); let impureDegreeTest = new SubcomplexFunctionTest("isPureComplex", [593, 731, 850, 610], [1638, 1434, 2090, 2597], [1261], -1); + +export { + SubcomplexOperationTest, SubcomplexFunctionTest, + vertexStarTest, + verticesStarTest, edgeStarTest, faceStarTest, + vertexClosureTest, verticesClosureTest, edgeClosureTest, faceClosureTest, + vertexLinkTest, verticesLinkTest, edgeLinkTest, faceLinkTest, + vertexBoundaryTest, edgeBoundaryTest, faceBoundaryTest, facesBoundaryTest, + vertexComplexTest, edgeComplexTest, closedEdgeComplexTest, faceComplexTest, faceEdgesComplexTest, closedFaceComplexTest, + vertexDegreeTest, edgeDegreeTest, closedEdgeDegreeTest, faceDegreeTest, faceEdgesDegreeTest, closedFaceDegreeTest, impureDegreeTest +} \ No newline at end of file diff --git a/tests/simplicial-complex-operators/test.html b/tests/simplicial-complex-operators/test.html deleted file mode 100644 index 40a1e2d..0000000 --- a/tests/simplicial-complex-operators/test.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Simplicial Complex Tests - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/simplicial-complex-operators/test.js b/tests/simplicial-complex-operators/test.js index abb3486..ffe7726 100644 --- a/tests/simplicial-complex-operators/test.js +++ b/tests/simplicial-complex-operators/test.js @@ -1,4 +1,21 @@ -"use strict"; +import chai from 'chai'; +import { + SubcomplexOperationTest, SubcomplexFunctionTest, + vertexStarTest, + verticesStarTest, edgeStarTest, faceStarTest, + vertexClosureTest, verticesClosureTest, edgeClosureTest, faceClosureTest, + vertexLinkTest, verticesLinkTest, edgeLinkTest, faceLinkTest, + vertexBoundaryTest, edgeBoundaryTest, faceBoundaryTest, facesBoundaryTest, + vertexComplexTest, edgeComplexTest, closedEdgeComplexTest, faceComplexTest, faceEdgesComplexTest, closedFaceComplexTest, + vertexDegreeTest, edgeDegreeTest, closedEdgeDegreeTest, faceDegreeTest, faceEdgesDegreeTest, closedFaceDegreeTest, impureDegreeTest +} from './solution.js'; +import small_bunny from '../../input/small_bunny.js' +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import MeshSubset from "../../core/mesh-subset.js"; +import SimplicialComplexOperators from "../../projects/simplicial-complex-operators/simplicial-complex-operators.js"; function subsetElementsGivenByList(subset, simplexList, indices) { if(subset.size != indices.length) { diff --git a/tests/vector-field-decomposition/test.html b/tests/vector-field-decomposition/test.html deleted file mode 100644 index 958e8c8..0000000 --- a/tests/vector-field-decomposition/test.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/tests/vector-field-decomposition/test.js b/tests/vector-field-decomposition/test.js index 4347e91..7840d59 100644 --- a/tests/vector-field-decomposition/test.js +++ b/tests/vector-field-decomposition/test.js @@ -1,4 +1,14 @@ -"use strict"; +import chai from 'chai'; +import solution from './solution.js'; +import LinearAlgebra from '../../linear-algebra/linear-algebra.js'; +let memoryManager = LinearAlgebra.memoryManager; +let DenseMatrix = LinearAlgebra.DenseMatrix; +import MeshIO from '../../utils/meshio.js'; +import { Mesh } from '../../core/mesh.js'; +import { Geometry } from '../../core/geometry.js'; +import HodgeDecomposition from '../../projects/vector-field-decomposition/hodge-decomposition.js'; +import TreeCotree from '../../projects/vector-field-decomposition/tree-cotree.js'; +import HarmonicBases from '../../projects/vector-field-decomposition/harmonic-bases.js'; describe("VectorFieldDecomposition", function() { let polygonSoup = MeshIO.readOBJ(solution); @@ -127,4 +137,4 @@ describe("VectorFieldDecomposition", function() { memoryManager.deleteExcept([]); }); }); -}); +}); \ No newline at end of file From 02e2bd5d5a3c92610dedd15644d05b49e25d7480 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sat, 13 Feb 2021 14:32:17 -0800 Subject: [PATCH 21/33] Fix Testing Folder Reference --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b351e2a..48e63f0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,8 +15,7 @@ jobs: - name: Install Testing Frameworks run: | - node -v - echo '{ "type": "module", "scripts": { "test": "mocha 'node/**/*.js' --recursive --reporter mocha-github-actions-reporter" } }' >package.json + echo '{ "type": "module", "scripts": { "test": "mocha tests/**/*.js --reporter mocha-github-actions-reporter" } }' >package.json npm install --save-dev mocha chai mocha-github-actions-reporter - name: Run Unit Tests From da9b228947dd832e95bde8c804a095ab6a93bc80 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 13:28:45 -0800 Subject: [PATCH 22/33] Begin reworking the docs generation --- doc-config/jsdoc.conf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-config/jsdoc.conf.json b/doc-config/jsdoc.conf.json index 435d2e4..94cea71 100644 --- a/doc-config/jsdoc.conf.json +++ b/doc-config/jsdoc.conf.json @@ -26,6 +26,6 @@ "hardwrap": true }, "source": { - "excludePattern": "geometry-processing-js/node" + "excludePattern": "node_modules" } } From b6ca6dd15375fd5bc5d55684d5abbad024cb2126 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 13:34:38 -0800 Subject: [PATCH 23/33] Add Module Descriptions back to linear-algebra for JSDoc --- linear-algebra/complex-dense-matrix.js | 110 +++++++------- linear-algebra/complex-sparse-matrix.js | 150 ++++++++++---------- linear-algebra/complex.js | 62 ++++---- linear-algebra/dense-matrix.js | 94 ++++++------ linear-algebra/emscripten-memory-manager.js | 8 +- linear-algebra/sparse-matrix.js | 142 +++++++++--------- linear-algebra/vector.js | 60 ++++---- 7 files changed, 312 insertions(+), 314 deletions(-) diff --git a/linear-algebra/complex-dense-matrix.js b/linear-algebra/complex-dense-matrix.js index 3f228be..bb9633c 100644 --- a/linear-algebra/complex-dense-matrix.js +++ b/linear-algebra/complex-dense-matrix.js @@ -8,7 +8,7 @@ class ComplexDenseMatrix { * zero-valued entries, is stored explicitly. Do not create a ComplexDenseMatrix * from its constructor, instead use static factory methods such as zeros, * identity, ones, constant and random. - * @constructor ComplexDenseMatrix + * @constructor module:LinearAlgebra.ComplexDenseMatrix * @example * let A = ComplexDenseMatrix.zeros(20, 5); * let B = ComplexDenseMatrix.identity(10, 10); @@ -24,7 +24,7 @@ class ComplexDenseMatrix { /** * Deletes the emscripten heap allocated data of this dense matrix. * @ignore - * @method ComplexDenseMatrix#delete + * @method module:LinearAlgebra.ComplexDenseMatrix#delete */ delete() { this.data.delete(); @@ -32,10 +32,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n matrix of zeros. - * @method ComplexDenseMatrix.zeros + * @method module:LinearAlgebra.ComplexDenseMatrix.zeros * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ static zeros(m, n = 1) { return new ComplexDenseMatrix(new Module.ComplexDenseMatrix(m, n)); @@ -43,10 +43,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n identity matrix. - * @method ComplexDenseMatrix.identity + * @method module:LinearAlgebra.ComplexDenseMatrix.identity * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ static identity(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.identity(m, n)); @@ -54,10 +54,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n matrix of ones. - * @method ComplexDenseMatrix.ones + * @method module:LinearAlgebra.ComplexDenseMatrix.ones * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ static ones(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.ones(m, n)); @@ -65,11 +65,11 @@ class ComplexDenseMatrix { /** * Initializes a m by n constant matrix. - * @method ComplexDenseMatrix.constant - * @param {Complex} x The constant value stored in every entry of this complex dense matrix. + * @method module:LinearAlgebra.ComplexDenseMatrix.constant + * @param {module:LinearAlgebra.Complex} x The constant value stored in every entry of this complex dense matrix. * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ static constant(x, m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.constant(m, n, x.data)); @@ -77,10 +77,10 @@ class ComplexDenseMatrix { /** * Initializes a m by n random matrix. - * @method ComplexDenseMatrix.random + * @method module:LinearAlgebra.ComplexDenseMatrix.random * @param {number} m The number of rows in this complex dense matrix. * @param {number} n The number of columns in this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ static random(m, n = 1) { return new ComplexDenseMatrix(Module.ComplexDenseMatrix.random(m, n)); @@ -88,8 +88,8 @@ class ComplexDenseMatrix { /** * Returns the transpose of this complex dense matrix. - * @method ComplexDenseMatrix#transpose - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexDenseMatrix#transpose + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ transpose() { return new ComplexDenseMatrix(this.data.transpose()); @@ -97,8 +97,8 @@ class ComplexDenseMatrix { /** * Returns the conjugate of this complex dense matrix. - * @method ComplexDenseMatrix#conjugate - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexDenseMatrix#conjugate + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ conjugate() { return new ComplexDenseMatrix(this.data.conjugate()); @@ -106,7 +106,7 @@ class ComplexDenseMatrix { /** * Returns the number of rows in this complex dense matrix. - * @method ComplexDenseMatrix#nRows + * @method module:LinearAlgebra.ComplexDenseMatrix#nRows * @returns {number} */ nRows() { @@ -115,7 +115,7 @@ class ComplexDenseMatrix { /** * Returns the number of columns in this complex dense matrix. - * @method ComplexDenseMatrix#nCols + * @method module:LinearAlgebra.ComplexDenseMatrix#nCols * @returns {number} */ nCols() { @@ -124,7 +124,7 @@ class ComplexDenseMatrix { /** * Computes the lInfinity, l1 or l2 norm of this complex dense matrix. - * @method ComplexDenseMatrix#norm + * @method module:LinearAlgebra.ComplexDenseMatrix#norm * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 * and l2 norm if n = 2. * @returns {number} @@ -135,7 +135,7 @@ class ComplexDenseMatrix { /** * Returns the rank of this complex dense matrix. - * @method ComplexDenseMatrix#rank + * @method module:LinearAlgebra.ComplexDenseMatrix#rank * @returns {number} */ rank() { @@ -144,8 +144,8 @@ class ComplexDenseMatrix { /** * Sums all the entries in this complex dense matrix. - * @method ComplexDenseMatrix#sum - * @returns {Complex} + * @method module:LinearAlgebra.ComplexDenseMatrix#sum + * @returns {module:LinearAlgebra.Complex} */ sum() { let u = this.data.sum(); @@ -155,12 +155,12 @@ class ComplexDenseMatrix { /** * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method ComplexDenseMatrix#subMatrix + * @method module:LinearAlgebra.ComplexDenseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ subMatrix(r0, r1, c0 = 0, c1 = 1) { return new ComplexDenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); @@ -168,8 +168,8 @@ class ComplexDenseMatrix { /** * A += B - * @method ComplexDenseMatrix#incrementBy - * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. + * @method module:LinearAlgebra.ComplexDenseMatrix#incrementBy + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -177,8 +177,8 @@ class ComplexDenseMatrix { /** * A -= B - * @method ComplexDenseMatrix#decrementBy - * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this complex dense matrix. + * @method module:LinearAlgebra.ComplexDenseMatrix#decrementBy + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix subtracted from this complex dense matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -186,8 +186,8 @@ class ComplexDenseMatrix { /** * A *= s - * @method ComplexDenseMatrix#scaleBy - * @param {Complex} s The complex number this complex dense matrix is scaled by. + * @method module:LinearAlgebra.ComplexDenseMatrix#scaleBy + * @param {module:LinearAlgebra.Complex} s The complex number this complex dense matrix is scaled by. */ scaleBy(s) { this.data.scaleBy(s.data); @@ -195,9 +195,9 @@ class ComplexDenseMatrix { /** * Returns A + B - * @method ComplexDenseMatrix#plus - * @param {ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexDenseMatrix#plus + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix added to this complex dense matrix. + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ plus(B) { return new ComplexDenseMatrix(this.data.plus(B.data)); @@ -205,10 +205,10 @@ class ComplexDenseMatrix { /** * Returns A - B - * @method ComplexDenseMatrix#minus - * @param {ComplexDenseMatrix} B The complex dense matrix subtracted from this + * @method module:LinearAlgebra.ComplexDenseMatrix#minus + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix subtracted from this * complex dense matrix. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ minus(B) { return new ComplexDenseMatrix(this.data.minus(B.data)); @@ -216,9 +216,9 @@ class ComplexDenseMatrix { /** * Returns A * s - * @method ComplexDenseMatrix#timesComplex - * @param {Complex} s The complex number this complex dense matrix is multiplied by. - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexDenseMatrix#timesComplex + * @param {module:LinearAlgebra.Complex} s The complex number this complex dense matrix is multiplied by. + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ timesComplex(s) { return new ComplexDenseMatrix(this.data.timesComplex(s.data)); @@ -226,10 +226,10 @@ class ComplexDenseMatrix { /** * Returns A * B - * @method ComplexDenseMatrix#timesDense - * @param {ComplexDenseMatrix} B The complex dense matrix this complex dense matrix + * @method module:LinearAlgebra.ComplexDenseMatrix#timesDense + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix this complex dense matrix * is multiplied by. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ timesDense(B) { return new ComplexDenseMatrix(this.data.timesDense(B.data)); @@ -237,8 +237,8 @@ class ComplexDenseMatrix { /** * Returns -A - * @method ComplexDenseMatrix#negated - * @return {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexDenseMatrix#negated + * @return {module:LinearAlgebra.ComplexDenseMatrix} */ negated() { return new ComplexDenseMatrix(this.data.negated()); @@ -246,10 +246,10 @@ class ComplexDenseMatrix { /** * Returns A(i, j) - * @method ComplexDenseMatrix#get + * @method module:LinearAlgebra.ComplexDenseMatrix#get * @param {number} i The ith row of this complex dense matrix. * @param {number} j The jth column of this complex dense matrix. - * @return {Complex} + * @return {module:LinearAlgebra.Complex} */ get(i, j = 0) { let u = this.data.get(i, j); @@ -258,8 +258,8 @@ class ComplexDenseMatrix { /** * A(i, j) = x - * @method ComplexDenseMatrix#set - * @param {Complex} x The complex value the (i, j)th entry of this complex dense + * @method module:LinearAlgebra.ComplexDenseMatrix#set + * @param {module:LinearAlgebra.Complex} x The complex value the (i, j)th entry of this complex dense * matrix is set to. * @param {number} i The ith row of this complex dense matrix. * @param {number} j The jth column of this complex dense matrix. @@ -270,10 +270,10 @@ class ComplexDenseMatrix { /** * Concatenates two complex dense matrices horizontally. - * @method ComplexDenseMatrix#hcat - * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated horizontally + * @method module:LinearAlgebra.ComplexDenseMatrix#hcat + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix that is concatenated horizontally * with this complex dense matrix. - * @return {ComplexDenseMatrix} + * @return {module:LinearAlgebra.ComplexDenseMatrix} */ hcat(B) { return new ComplexDenseMatrix(this.data.hcat(B.data)); @@ -281,10 +281,10 @@ class ComplexDenseMatrix { /** * Concatenates two complex dense matrices vertically. - * @method ComplexDenseMatrix#vcat - * @param {ComplexDenseMatrix} B The complex dense matrix that is concatenated vertically + * @method module:LinearAlgebra.ComplexDenseMatrix#vcat + * @param {module:LinearAlgebra.ComplexDenseMatrix} B The complex dense matrix that is concatenated vertically * with this complex dense matrix. - * @return {ComplexDenseMatrix} + * @return {module:LinearAlgebra.ComplexDenseMatrix} */ vcat(B) { return new ComplexDenseMatrix(this.data.vcat(B.data)); diff --git a/linear-algebra/complex-sparse-matrix.js b/linear-algebra/complex-sparse-matrix.js index 5167fe2..b7c736f 100644 --- a/linear-algebra/complex-sparse-matrix.js +++ b/linear-algebra/complex-sparse-matrix.js @@ -7,7 +7,7 @@ class ComplexSparseMatrix { * This class represents a m by n complex matrix where only nonzero entries * are stored explicitly. Do not create a ComplexSparseMatrix from its constructor, * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor ComplexSparseMatrix + * @constructor module:LinearAlgebra.ComplexSparseMatrix * @example * let T = new ComplexTriplet(100, 100); * T.addEntry(new Complex(3.4, 6.4), 11, 43); @@ -27,18 +27,18 @@ class ComplexSparseMatrix { /** * Deletes the emscripten heap allocated data of this complex sparse matrix. * @ignore - * @method ComplexSparseMatrix#delete + * @method module:LinearAlgebra.ComplexSparseMatrix#delete */ delete() { this.data.delete(); } /** - * Initializes a complex sparse matrix from a {@link ComplexTriplet} object. - * @method ComplexSparseMatrix.fromTriplet - * @param {ComplexTriplet} T A complex triplet object containing only the nonzero + * Initializes a complex sparse matrix from a {@link module:LinearAlgebra.ComplexTriplet ComplexTriplet} object. + * @method module:LinearAlgebra.ComplexSparseMatrix.fromTriplet + * @param {module:LinearAlgebra.ComplexTriplet} T A complex triplet object containing only the nonzero * entries that need to be stored in this complex sparse matrix. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ static fromTriplet(T) { return new ComplexSparseMatrix(new Module.ComplexSparseMatrix(T.data)); @@ -46,10 +46,10 @@ class ComplexSparseMatrix { /** * Initializes a m by n complex sparse identity matrix. - * @method ComplexSparseMatrix.identity + * @method module:LinearAlgebra.ComplexSparseMatrix.identity * @param {number} m The number of rows in this complex sparse matrix. * @param {number} n The number of columns in this complex sparse matrix. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ static identity(m, n) { return new ComplexSparseMatrix(Module.ComplexSparseMatrix.identity(m, n)); @@ -57,10 +57,10 @@ class ComplexSparseMatrix { /** * Initializes a complex sparse diagonal matrix. - * @method ComplexSparseMatrix.diag - * @param {ComplexDenseMatrix} d The complex dense vector (d.nCols() == 1) used + * @method module:LinearAlgebra.ComplexSparseMatrix.diag + * @param {module:LinearAlgebra.ComplexDenseMatrix} d The complex dense vector (d.nCols() == 1) used * to initialize this complex sparse diagonal matrix. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ static diag(d) { return new ComplexSparseMatrix(Module.ComplexSparseMatrix.diag(d.data)); @@ -68,8 +68,8 @@ class ComplexSparseMatrix { /** * Returns the transpose of this complex sparse matrix. - * @method ComplexSparseMatrix#transpose - * @returns {ComplexSparseMatrix} + * @method module:LinearAlgebra.ComplexSparseMatrix#transpose + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ transpose() { return new ComplexSparseMatrix(this.data.transpose()); @@ -77,8 +77,8 @@ class ComplexSparseMatrix { /** * Returns the inverse of this diagonal complex sparse matrix. - * @method ComplexSparseMatrix#invertDiagonal - * @returns {ComplexSparseMatrix} + * @method module:LinearAlgebra.ComplexSparseMatrix#invertDiagonal + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ invertDiagonal() { let N = this.nRows(); @@ -93,8 +93,8 @@ class ComplexSparseMatrix { /** * Returns the conjugate of this complex sparse matrix. - * @method ComplexSparseMatrix#conjugate - * @returns {ComplexSparseMatrix} + * @method module:LinearAlgebra.ComplexSparseMatrix#conjugate + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ conjugate() { return new ComplexSparseMatrix(this.data.conjugate()); @@ -102,7 +102,7 @@ class ComplexSparseMatrix { /** * Returns the number of rows in this complex sparse matrix. - * @method ComplexSparseMatrix#nRows + * @method module:LinearAlgebra.ComplexSparseMatrix#nRows * @returns {number} */ nRows() { @@ -111,7 +111,7 @@ class ComplexSparseMatrix { /** * Returns the number of columns in this complex sparse matrix. - * @method ComplexSparseMatrix#nCols + * @method module:LinearAlgebra.ComplexSparseMatrix#nCols * @returns {number} */ nCols() { @@ -120,7 +120,7 @@ class ComplexSparseMatrix { /** * Returns the number of nonzero entries in this complex sparse matrix. - * @method ComplexSparseMatrix#nnz + * @method module:LinearAlgebra.ComplexSparseMatrix#nnz * @returns {number} */ nnz() { @@ -129,7 +129,7 @@ class ComplexSparseMatrix { /** * Computes the frobenius norm of this complex sparse matrix. - * @method ComplexSparseMatrix#frobeniusNorm + * @method module:LinearAlgebra.ComplexSparseMatrix#frobeniusNorm * @returns {number} */ frobeniusNorm() { @@ -139,39 +139,39 @@ class ComplexSparseMatrix { /** * Extracts a complex sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., * a matrix of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method ComplexSparseMatrix#subMatrix + * @method module:LinearAlgebra.ComplexSparseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ subMatrix(r0, r1, c0, c1) { return new ComplexSparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); } /** - * Returns a sparse {@link ComplexCholesky} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#chol - * @returns {ComplexCholesky} + * Returns a sparse {@link module:LinearAlgebra.ComplexCholesky ComplexCholesky} factorization of this complex sparse matrix. + * @method module:LinearAlgebra.ComplexSparseMatrix#chol + * @returns {module:LinearAlgebra.ComplexCholesky} */ chol() { return new ComplexCholesky(this.data.chol()); } /** - * Returns a sparse {@link ComplexLU} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#lu - * @returns {ComplexLU} + * Returns a sparse {@link module:LinearAlgebra.ComplexLU ComplexLU} factorization of this complex sparse matrix. + * @method module:LinearAlgebra.ComplexSparseMatrix#lu + * @returns {module:LinearAlgebra.ComplexLU} */ lu() { return new ComplexLU(this.data.lu()); } /** - * Returns a sparse {@link ComplexQR} factorization of this complex sparse matrix. - * @method ComplexSparseMatrix#qr - * @returns {ComplexQR} + * Returns a sparse {@link module:LinearAlgebra.ComplexQR ComplexQR} factorization of this complex sparse matrix. + * @method module:LinearAlgebra.ComplexSparseMatrix#qr + * @returns {module:LinearAlgebra.ComplexQR} */ qr() { return new ComplexQR(this.data.qr()); @@ -179,8 +179,8 @@ class ComplexSparseMatrix { /** * Returns a dense copy of this complex sparse matrix. - * @method ComplexSparseMatrix#toDense - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexSparseMatrix#toDense + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ toDense() { return new ComplexDenseMatrix(this.data.toDense()); @@ -188,8 +188,8 @@ class ComplexSparseMatrix { /** * A += B - * @method ComplexSparseMatrix#incrementBy - * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex + * @method module:LinearAlgebra.ComplexSparseMatrix#incrementBy + * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix added to this complex * sparse matrix. */ incrementBy(B) { @@ -198,8 +198,8 @@ class ComplexSparseMatrix { /** * A -= B - * @method ComplexSparseMatrix#decrementBy - * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from + * @method module:LinearAlgebra.ComplexSparseMatrix#decrementBy + * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix subtracted from * this complex sparse matrix. */ decrementBy(B) { @@ -208,8 +208,8 @@ class ComplexSparseMatrix { /** * A *= s - * @method ComplexSparseMatrix#scaleBy - * @param {Complex} s The complex number this complex sparse matrix is scaled by. + * @method module:LinearAlgebra.ComplexSparseMatrix#scaleBy + * @param {module:LinearAlgebra.Complex} s The complex number this complex sparse matrix is scaled by. */ scaleBy(s) { this.data.scaleBy(s.data); @@ -217,10 +217,10 @@ class ComplexSparseMatrix { /** * Returns A + B - * @method ComplexSparseMatrix#plus - * @param {ComplexSparseMatrix} B The complex sparse matrix added to this complex + * @method module:LinearAlgebra.ComplexSparseMatrix#plus + * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix added to this complex * sparse matrix. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ plus(B) { return new ComplexSparseMatrix(this.data.plus(B.data)); @@ -228,10 +228,10 @@ class ComplexSparseMatrix { /** * Returns A - B - * @method ComplexSparseMatrix#minus - * @param {ComplexSparseMatrix} B The complex sparse matrix subtracted from this + * @method module:LinearAlgebra.ComplexSparseMatrix#minus + * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix subtracted from this * complex sparse matrix. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ minus(B) { return new ComplexSparseMatrix(this.data.minus(B.data)); @@ -239,9 +239,9 @@ class ComplexSparseMatrix { /** * Returns A * s - * @method ComplexSparseMatrix#timesComplex - * @param {Complex} s The complex number this complex sparse matrix is multiplied by. - * @returns {ComplexSparseMatrix} + * @method module:LinearAlgebra.ComplexSparseMatrix#timesComplex + * @param {module:LinearAlgebra.Complex} s The complex number this complex sparse matrix is multiplied by. + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ timesComplex(s) { return new ComplexSparseMatrix(this.data.timesComplex(s.data)); @@ -249,10 +249,10 @@ class ComplexSparseMatrix { /** * Returns A * X - * @method ComplexSparseMatrix#timesDense - * @param {ComplexDenseMatrix} X The complex dense matrix this complex sparse matrix + * @method module:LinearAlgebra.ComplexSparseMatrix#timesDense + * @param {module:LinearAlgebra.ComplexDenseMatrix} X The complex dense matrix this complex sparse matrix * is multiplied by. - * @returns {ComplexDenseMatrix} + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ timesDense(X) { return new ComplexDenseMatrix(this.data.timesDense(X.data)); @@ -260,10 +260,10 @@ class ComplexSparseMatrix { /** * Returns A * B - * @method ComplexSparseMatrix#timesSparse - * @param {ComplexSparseMatrix} B The complex sparse matrix this complex sparse matrix + * @method module:LinearAlgebra.ComplexSparseMatrix#timesSparse + * @param {module:LinearAlgebra.ComplexSparseMatrix} B The complex sparse matrix this complex sparse matrix * is multiplied by. - * @returns {ComplexSparseMatrix} + * @returns {module:LinearAlgebra.ComplexSparseMatrix} */ timesSparse(B) { return new ComplexSparseMatrix(this.data.timesSparse(B.data)); @@ -272,9 +272,9 @@ class ComplexSparseMatrix { class ComplexTriplet { /** - * This class represents a small structure to hold nonzero entries in a {@link ComplexSparseMatrix}. + * This class represents a small structure to hold nonzero entries in a {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. * Each entry is a triplet of a complex value and the (i, j)th indices, i.e., (x, i, j). - * @constructor ComplexTriplet + * @constructor module:LinearAlgebra.ComplexTriplet * @param {number} m The number of rows in the complex sparse matrix that will be * initialized from this complex triplet. * @param {number} n The number of columns in the complex sparse matrix that will be @@ -294,7 +294,7 @@ class ComplexTriplet { /** * Deletes the emscripten heap allocated data of this sparse matrix. * @ignore - * @method ComplexTriplet#delete + * @method module:LinearAlgebra.ComplexTriplet#delete */ delete() { this.data.delete(); @@ -302,7 +302,7 @@ class ComplexTriplet { /** * A(i, j) += x - * @method ComplexTriplet#addEntry + * @method module:LinearAlgebra.ComplexTriplet#addEntry * @param {number} x The value of the nonzero entry being inserted into this * complex triplet. * @param {number} i The ith row of the complex sparse matrix that will be initialized @@ -318,14 +318,14 @@ class ComplexTriplet { class ComplexCholesky { /** * This class represents a complex Choleksy LL^T factorization of a square and - * positive definite {@link ComplexSparseMatrix}. The factorization is computed on the + * positive definite {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. The factorization is computed on the * first call to solvePositiveDefinite, and is reused in subsequent calls to * solvePositiveDefinite (e.g. when only the right hand side b of the linear system * Ax = b changes) unless the complex sparse matrix itself is altered through * operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the complex Choleksy factorization of a complex * sparse matrix directly from the matrix itself. - * @constructor ComplexCholesky + * @constructor module:LinearAlgebra.ComplexCholesky * @example * // solve the linear system Ax = b, where A is a square * // and complex positive definite sparse matrix @@ -345,9 +345,9 @@ class ComplexCholesky { /** * Solves the linear system Ax = b, where A is a square and complex positive * definite sparse matrix. - * @method ComplexCholesky#solvePositiveDefinite - * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexCholesky#solvePositiveDefinite + * @param {module:LinearAlgebra.ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ solvePositiveDefinite(b) { return new ComplexDenseMatrix(this.data.solvePositiveDefinite(b.data)); @@ -356,14 +356,14 @@ class ComplexCholesky { class ComplexLU { /** - * This class represents a complex LU factorization of a square {@link ComplexSparseMatrix}. + * This class represents a complex LU factorization of a square {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. * The factorization is computed on the first call to solveSquare, and is reused * in subsequent calls to solveSquare (e.g. when only the right hand side b * of the linear system Ax = b changes) unless the complex sparse matrix itself * is altered through operations such as *=, += and -=. Do not use the constructor * to initialize this class, instead access the complex LU factorization * of a complex sparse matrix directly from the matrix itself. - * @constructor ComplexLU + * @constructor module:LinearAlgebra.ComplexLU * @example * // solve the linear system Ax = b, where A is a square and complex sparse matrix * let A = ComplexSparseMatrix.identity(5, 5); @@ -381,9 +381,9 @@ class ComplexLU { /** * Solves the linear system Ax = b, where A is a square and complex sparse matrix. - * @method ComplexLU#solveSquare - * @param {ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexLU#solveSquare + * @param {module:LinearAlgebra.ComplexDenseMatrix} b The complex dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ solveSquare(b) { return new ComplexDenseMatrix(this.data.solveSquare(b.data)); @@ -392,14 +392,14 @@ class ComplexLU { class ComplexQR { /** - * This class represents a complex QR factorization of a rectangular {@link ComplexSparseMatrix}. + * This class represents a complex QR factorization of a rectangular {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix}. * The factorization is computed on the first call to solve, and is reused in * subsequent calls to solve (e.g. when only the right hand side b of the linear * system Ax = b changes) unless the complex sparse matrix itself is altered * through operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the complex QR factorization of a complex sparse * matrix directly from the matrix itself. - * @constructor ComplexQR + * @constructor module:LinearAlgebra.ComplexQR * @example * // solve the linear system Ax = b, where A is a rectangular and complex sparse matrix * let A = ComplexSparseMatrix.identity(5, 5); @@ -408,7 +408,7 @@ class ComplexQR { * let qr = A.qr(); * let x = qr.solve(b); * - * b.scaleBy(Complex(5, 0)); + * b.scaleBy(new Complex(5, 0)); * x = qr.solve(b); // factorization is reused */ constructor(data) { @@ -417,9 +417,9 @@ class ComplexQR { /** * Solves the linear system Ax = b, where A is a rectangular and complex sparse matrix. - * @method ComplexQR#solve - * @param {ComplexDenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {ComplexDenseMatrix} + * @method module:LinearAlgebra.ComplexQR#solve + * @param {module:LinearAlgebra.ComplexDenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.ComplexDenseMatrix} */ solve(b) { return new ComplexDenseMatrix(this.data.solve(b.data)); diff --git a/linear-algebra/complex.js b/linear-algebra/complex.js index 078da35..c0a468d 100644 --- a/linear-algebra/complex.js +++ b/linear-algebra/complex.js @@ -4,7 +4,7 @@ import { memoryManager } from './emscripten-memory-manager.js'; class Complex { /** * This class represents a complex number a + bi. - * @constructor Complex + * @constructor module:LinearAlgebra.Complex * @param {number} re The real component of this complex number. * @param {number} im The imaginary component of this complex number. */ @@ -15,7 +15,7 @@ class Complex { /** * Deletes the emscripten heap allocated data of this complex number. - * @method Complex#delete + * @method module:LinearAlgebra.Complex#delete * @ignore */ delete() { @@ -24,7 +24,7 @@ class Complex { /** * The real component of this complex number. - * @member Complex#re + * @member module:LinearAlgebra.Complex#re * @type {number} */ get re() { @@ -33,7 +33,7 @@ class Complex { /** * The imaginary component of this complex number. - * @member Complex#im + * @member module:LinearAlgebra.Complex#im * @type {number} */ get im() { @@ -42,7 +42,7 @@ class Complex { /** * Computes the phase angle of this complex number. - * @method Complex#arg + * @method module:LinearAlgebra.Complex#arg * @returns {number} */ arg() { @@ -51,7 +51,7 @@ class Complex { /** * Computes the norm of this complex number. - * @method Complex#norm + * @method module:LinearAlgebra.Complex#norm * @returns {number} */ norm() { @@ -60,7 +60,7 @@ class Complex { /** * Computes the squared norm of this complex number. - * @method Complex#norm2 + * @method module:LinearAlgebra.Complex#norm2 * @returns {number} */ norm2() { @@ -69,8 +69,8 @@ class Complex { /** * Computes a - bi - * @method Complex#conjugate - * @returns {Complex} + * @method module:LinearAlgebra.Complex#conjugate + * @returns {module:LinearAlgebra.Complex} */ conjugate() { return new Complex(this.re, -this.im); @@ -78,8 +78,8 @@ class Complex { /** * Computes (a + bi)^-1 - * @method Complex#inverse - * @returns {Complex} + * @method module:LinearAlgebra.Complex#inverse + * @returns {module:LinearAlgebra.Complex} */ inverse() { return this.conjugate().overReal(this.norm2()); @@ -88,8 +88,8 @@ class Complex { /** * Computes the polar form ae^(iθ), where a is the norm and θ is the * phase angle of this complex number. - * @method Complex#polar - * @returns {Complex} + * @method module:LinearAlgebra.Complex#polar + * @returns {module:LinearAlgebra.Complex} */ polar() { let a = this.norm(); @@ -100,8 +100,8 @@ class Complex { /** * Exponentiates this complex number. - * @method Complex#exp - * @returns {Complex} + * @method module:LinearAlgebra.Complex#exp + * @returns {module:LinearAlgebra.Complex} */ exp() { let a = Math.exp(this.re); @@ -112,9 +112,9 @@ class Complex { /** * Returns u + v - * @method Complex#plus - * @param {Complex} v The complex number added to this complex number. - * @return {Complex} + * @method module:LinearAlgebra.Complex#plus + * @param {module:LinearAlgebra.Complex} v The complex number added to this complex number. + * @return {module:LinearAlgebra.Complex} */ plus(v) { return new Complex(this.re + v.re, this.im + v.im); @@ -122,9 +122,9 @@ class Complex { /** * Returns u - v - * @method Complex#minus - * @param {Complex} v The complex number subtracted from this complex number. - * @return {Complex} + * @method module:LinearAlgebra.Complex#minus + * @param {module:LinearAlgebra.Complex} v The complex number subtracted from this complex number. + * @return {module:LinearAlgebra.Complex} */ minus(v) { return new Complex(this.re - v.re, this.im - v.im); @@ -132,9 +132,9 @@ class Complex { /** * Returns u * s - * @method Complex#timesReal + * @method module:LinearAlgebra.Complex#timesReal * @param {number} s The number this complex number is multiplied by. - * @return {Complex} + * @return {module:LinearAlgebra.Complex} */ timesReal(s) { return new Complex(this.re * s, this.im * s); @@ -142,9 +142,9 @@ class Complex { /** * Returns u / s - * @method Complex#overReal + * @method module:LinearAlgebra.Complex#overReal * @param {number} s The number this complex number is divided by. - * @return {Complex} + * @return {module:LinearAlgebra.Complex} */ overReal(s) { return this.timesReal(1 / s); @@ -152,9 +152,9 @@ class Complex { /** * Returns u * v - * @method Complex#timesComplex - * @param {Complex} v The complex number this complex number is multiplied by. - * @return {Complex} + * @method module:LinearAlgebra.Complex#timesComplex + * @param {module:LinearAlgebra.Complex} v The complex number this complex number is multiplied by. + * @return {module:LinearAlgebra.Complex} */ timesComplex(v) { let a = this.re; @@ -170,9 +170,9 @@ class Complex { /** * Returns u / v - * @method Complex#overComplex - * @param {Complex} v The complex number this complex number is divided by. - * @return {Complex} + * @method module:LinearAlgebra.Complex#overComplex + * @param {module:LinearAlgebra.Complex} v The complex number this complex number is divided by. + * @return {module:LinearAlgebra.Complex} */ overComplex(v) { return this.timesComplex(v.inverse()); diff --git a/linear-algebra/dense-matrix.js b/linear-algebra/dense-matrix.js index 329ccff..9d33763 100644 --- a/linear-algebra/dense-matrix.js +++ b/linear-algebra/dense-matrix.js @@ -7,7 +7,7 @@ class DenseMatrix { * zero-valued entries, is stored explicitly. Do not create a DenseMatrix * from its constructor, instead use static factory methods such as zeros, * identity, ones, constant and random. - * @constructor DenseMatrix + * @constructor module:LinearAlgebra.DenseMatrix * @example * let A = DenseMatrix.zeros(20, 5); * let B = DenseMatrix.identity(10, 10); @@ -23,7 +23,7 @@ class DenseMatrix { /** * Deletes the emscripten heap allocated data of this dense matrix. * @ignore - * @method DenseMatrix#delete + * @method module:LinearAlgebra.DenseMatrix#delete */ delete() { this.data.delete(); @@ -31,10 +31,10 @@ class DenseMatrix { /** * Initializes a m by n matrix of zeros. - * @method DenseMatrix.zeros + * @method module:LinearAlgebra.DenseMatrix.zeros * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ static zeros(m, n = 1) { return new DenseMatrix(new Module.DenseMatrix(m, n)); @@ -42,10 +42,10 @@ class DenseMatrix { /** * Initializes a m by n identity matrix. - * @method DenseMatrix.identity + * @method module:LinearAlgebra.DenseMatrix.identity * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ static identity(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.identity(m, n)); @@ -53,10 +53,10 @@ class DenseMatrix { /** * Initializes a m by n matrix of ones. - * @method DenseMatrix.ones + * @method module:LinearAlgebra.DenseMatrix.ones * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ static ones(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.ones(m, n)); @@ -64,11 +64,11 @@ class DenseMatrix { /** * Initializes a m by n constant matrix. - * @method DenseMatrix.constant + * @method module:LinearAlgebra.DenseMatrix.constant * @param {number} x The constant value stored in every entry of this dense matrix. * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ static constant(x, m, n = 1) { return new DenseMatrix(Module.DenseMatrix.constant(m, n, x)); @@ -76,10 +76,10 @@ class DenseMatrix { /** * Initializes a m by n random matrix. - * @method DenseMatrix.random + * @method module:LinearAlgebra.DenseMatrix.random * @param {number} m The number of rows in this dense matrix. * @param {number} n The number of columns in this dense matrix. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ static random(m, n = 1) { return new DenseMatrix(Module.DenseMatrix.random(m, n)); @@ -87,8 +87,8 @@ class DenseMatrix { /** * Returns the transpose of this dense matrix. - * @method DenseMatrix#transpose - * @returns {DenseMatrix} + * @method module:LinearAlgebra.DenseMatrix#transpose + * @returns {module:LinearAlgebra.DenseMatrix} */ transpose() { return new DenseMatrix(this.data.transpose()); @@ -96,7 +96,7 @@ class DenseMatrix { /** * Returns the number of rows in this dense matrix. - * @method DenseMatrix#nRows + * @method module:LinearAlgebra.DenseMatrix#nRows * @returns {number} */ nRows() { @@ -105,7 +105,7 @@ class DenseMatrix { /** * Returns the number of columns in this dense matrix. - * @method DenseMatrix#nCols + * @method module:LinearAlgebra.DenseMatrix#nCols * @returns {number} */ nCols() { @@ -114,7 +114,7 @@ class DenseMatrix { /** * Computes the lInfinity, l1 or l2 norm of this dense matrix. - * @method DenseMatrix#norm + * @method module:LinearAlgebra.DenseMatrix#norm * @param {number} n Computes the lInfinity norm if n = 0, l1 norm if n = 1 * and l2 norm if n = 2. * @returns {number} @@ -125,7 +125,7 @@ class DenseMatrix { /** * Returns the rank of this dense matrix. - * @method DenseMatrix#rank + * @method module:LinearAlgebra.DenseMatrix#rank * @returns {number} */ rank() { @@ -134,7 +134,7 @@ class DenseMatrix { /** * Sums all the entries in this dense matrix. - * @method DenseMatrix#sum + * @method module:LinearAlgebra.DenseMatrix#sum * @returns {number} */ sum() { @@ -144,12 +144,12 @@ class DenseMatrix { /** * Extracts a sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method DenseMatrix#subMatrix + * @method module:LinearAlgebra.DenseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ subMatrix(r0, r1, c0 = 0, c1 = 1) { return new DenseMatrix(this.data.subMatrix(r0, r1, c0, c1)); @@ -157,8 +157,8 @@ class DenseMatrix { /** * A += B - * @method DenseMatrix#incrementBy - * @param {DenseMatrix} B The dense matrix added to this dense matrix. + * @method module:LinearAlgebra.DenseMatrix#incrementBy + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix added to this dense matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -166,8 +166,8 @@ class DenseMatrix { /** * A -= B - * @method DenseMatrix#decrementBy - * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. + * @method module:LinearAlgebra.DenseMatrix#decrementBy + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix subtracted from this dense matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -175,7 +175,7 @@ class DenseMatrix { /** * A *= s - * @method DenseMatrix#scaleBy + * @method module:LinearAlgebra.DenseMatrix#scaleBy * @param {number} s The number this dense matrix is scaled by. */ scaleBy(s) { @@ -184,9 +184,9 @@ class DenseMatrix { /** * Returns A + B - * @method DenseMatrix#plus - * @param {DenseMatrix} B The dense matrix added to this dense matrix. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.DenseMatrix#plus + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix added to this dense matrix. + * @returns {module:LinearAlgebra.DenseMatrix} */ plus(B) { return new DenseMatrix(this.data.plus(B.data)); @@ -194,9 +194,9 @@ class DenseMatrix { /** * Returns A - B - * @method DenseMatrix#minus - * @param {DenseMatrix} B The dense matrix subtracted from this dense matrix. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.DenseMatrix#minus + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix subtracted from this dense matrix. + * @returns {module:LinearAlgebra.DenseMatrix} */ minus(B) { return new DenseMatrix(this.data.minus(B.data)); @@ -204,9 +204,9 @@ class DenseMatrix { /** * Returns A * s - * @method DenseMatrix#timesReal + * @method module:LinearAlgebra.DenseMatrix#timesReal * @param {number} s The number this dense matrix is multiplied by. - * @returns {DenseMatrix} + * @returns {module:LinearAlgebra.DenseMatrix} */ timesReal(s) { return new DenseMatrix(this.data.timesReal(s)); @@ -214,9 +214,9 @@ class DenseMatrix { /** * Returns A * B - * @method DenseMatrix#timesDense - * @param {DenseMatrix} B The dense matrix this dense matrix is multiplied by. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.DenseMatrix#timesDense + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix this dense matrix is multiplied by. + * @returns {module:LinearAlgebra.DenseMatrix} */ timesDense(B) { return new DenseMatrix(this.data.timesDense(B.data)); @@ -224,8 +224,8 @@ class DenseMatrix { /** * Returns -A - * @method DenseMatrix#negated - * @return {DenseMatrix} + * @method module:LinearAlgebra.DenseMatrix#negated + * @return {module:LinearAlgebra.DenseMatrix} */ negated() { return new DenseMatrix(this.data.negated()); @@ -233,7 +233,7 @@ class DenseMatrix { /** * Returns A(i, j) - * @method DenseMatrix#get + * @method module:LinearAlgebra.DenseMatrix#get * @param {number} i The ith row of this dense matrix. * @param {number} j The jth column of this dense matrix. * @return {number} @@ -244,7 +244,7 @@ class DenseMatrix { /** * A(i, j) = x - * @method DenseMatrix#set + * @method module:LinearAlgebra.DenseMatrix#set * @param {number} x The real value the (i, j)th entry of this dense matrix is set to. * @param {number} i The ith row of this dense matrix. * @param {number} j The jth column of this dense matrix. @@ -255,10 +255,10 @@ class DenseMatrix { /** * Concatenates two dense matrices horizontally. - * @method DenseMatrix#hcat - * @param {DenseMatrix} B The dense matrix that is concatenated horizontally + * @method module:LinearAlgebra.DenseMatrix#hcat + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix that is concatenated horizontally * with this dense matrix. - * @return {DenseMatrix} + * @return {module:LinearAlgebra.DenseMatrix} */ hcat(B) { return new DenseMatrix(this.data.hcat(B.data)); @@ -266,10 +266,10 @@ class DenseMatrix { /** * Concatenates two dense matrices vertically. - * @method DenseMatrix#vcat - * @param {DenseMatrix} B The dense matrix that is concatenated vertically + * @method module:LinearAlgebra.DenseMatrix#vcat + * @param {module:LinearAlgebra.DenseMatrix} B The dense matrix that is concatenated vertically * with this dense matrix. - * @return {DenseMatrix} + * @return {module:LinearAlgebra.DenseMatrix} */ vcat(B) { return new DenseMatrix(this.data.vcat(B.data)); diff --git a/linear-algebra/emscripten-memory-manager.js b/linear-algebra/emscripten-memory-manager.js index 4e3f57e..7304cf6 100644 --- a/linear-algebra/emscripten-memory-manager.js +++ b/linear-algebra/emscripten-memory-manager.js @@ -3,14 +3,14 @@ class EmscriptenMemoryManager { * This class serves as a semi automatic memory manager/garbage collector * for objects that internally store data and perform operations on the {@link http://emscripten.org emscripten} * heap, and hence cannot be freed by the Javascript garbage collector. These - * include {@link DenseMatrix}, {@link SparseMatrix}, {@link Triplet}, {@link Complex}, {@link ComplexDenseMatrix}, - * {@link ComplexSparseMatrix} and {@link ComplexTriplet}. Since operations involving the above + * include {@link module:LinearAlgebra.DenseMatrix DenseMatrix}, {@link module:LinearAlgebra.SparseMatrix SparseMatrix}, {@link module:LinearAlgebra.Triplet Triplet}, {@link module:LinearAlgebra.Complex Complex}, {@link module:LinearAlgebra.ComplexDenseMatrix ComplexDenseMatrix}, + * {@link module:LinearAlgebra.ComplexSparseMatrix ComplexSparseMatrix} and {@link module:LinearAlgebra.ComplexTriplet ComplexTriplet}. Since operations involving the above * matrices and linear algebra entities are frequent and generate a lot of intermediate * variables, EmscriptenMemoryManager automatically tracks all objects that are * allocated on the emscripten heap to ease the burden of manual memory management. * The user is required to inform the EmscriptenMemoryManager about when it should * clear the heap and which objects it should *not* delete while doing so. - * @constructor EmscriptenMemoryManager + * @constructor module:LinearAlgebra.EmscriptenMemoryManager * @property {Object[]} objectList Array of objects allocated on the emscripten heap. * @example * let memoryManager = new EmscriptenMemoryManager(); @@ -29,7 +29,7 @@ class EmscriptenMemoryManager { /** * Deletes all objects in this memory manager's list of emscripten heap allocated * objects except those in the array passed to this method. - * @method EmscriptenMemoryManager#deleteExcept + * @method module:LinearAlgebra.EmscriptenMemoryManager#deleteExcept * @param {Object[]} exceptList Array of objects allocated on the emscripten heap * that should not to be deleted. */ diff --git a/linear-algebra/sparse-matrix.js b/linear-algebra/sparse-matrix.js index 3a90109..f901057 100644 --- a/linear-algebra/sparse-matrix.js +++ b/linear-algebra/sparse-matrix.js @@ -7,7 +7,7 @@ class SparseMatrix { * This class represents a m by n real matrix where only nonzero entries * are stored explicitly. Do not create a SparseMatrix from its constructor, * instead use static factory methods such as fromTriplet, identity and diag. - * @constructor SparseMatrix + * @constructor module:LinearAlgebra.SparseMatrix * @example * let T = new Triplet(100, 100); * T.addEntry(3.4, 11, 43); @@ -27,18 +27,18 @@ class SparseMatrix { /** * Deletes the emscripten heap allocated data of this sparse matrix. * @ignore - * @method SparseMatrix#delete + * @method module:LinearAlgebra.SparseMatrix#delete */ delete() { this.data.delete(); } /** - * Initializes a sparse matrix from a {@link Triplet} object. - * @method SparseMatrix.fromTriplet - * @param {Triplet} T A triplet object containing only the nonzero entries that + * Initializes a sparse matrix from a {@link module:LinearAlgebra.Triplet Triplet} object. + * @method module:LinearAlgebra.SparseMatrix.fromTriplet + * @param {module:LinearAlgebra.Triplet} T A triplet object containing only the nonzero entries that * need to be stored in this sparse matrix. - * @returns {SparseMatrix} + * @returns {module:LinearAlgebra.SparseMatrix} */ static fromTriplet(T) { return new SparseMatrix(new Module.SparseMatrix(T.data)); @@ -46,10 +46,10 @@ class SparseMatrix { /** * Initializes a m by n sparse identity matrix. - * @method SparseMatrix.identity + * @method module:LinearAlgebra.SparseMatrix.identity * @param {number} m The number of rows in this sparse matrix. * @param {number} n The number of columns in this sparse matrix. - * @returns {SparseMatrix} + * @returns {module:LinearAlgebra.SparseMatrix} */ static identity(m, n) { return new SparseMatrix(Module.SparseMatrix.identity(m, n)); @@ -57,10 +57,10 @@ class SparseMatrix { /** * Initializes a sparse diagonal matrix. - * @method SparseMatrix.diag - * @param {DenseMatrix} d The dense vector (d.nCols() == 1) used to initialize + * @method module:LinearAlgebra.SparseMatrix.diag + * @param {module:LinearAlgebra.DenseMatrix} d The dense vector (d.nCols() == 1) used to initialize * this sparse diagonal matrix. - * @returns {SparseMatrix} + * @returns {module:LinearAlgebra.SparseMatrix} */ static diag(d) { return new SparseMatrix(Module.SparseMatrix.diag(d.data)); @@ -68,8 +68,8 @@ class SparseMatrix { /** * Returns the transpose of this sparse matrix. - * @method SparseMatrix#transpose - * @returns {SparseMatrix} + * @method module:LinearAlgebra.SparseMatrix#transpose + * @returns {module:LinearAlgebra.SparseMatrix} */ transpose() { return new SparseMatrix(this.data.transpose()); @@ -77,8 +77,8 @@ class SparseMatrix { /** * Returns the inverse of this diagonal sparse matrix. - * @method SparseMatrix#invertDiagonal - * @returns {SparseMatrix} + * @method module:LinearAlgebra.SparseMatrix#invertDiagonal + * @returns {module:LinearAlgebra.SparseMatrix} */ invertDiagonal() { let N = this.nRows(); @@ -93,7 +93,7 @@ class SparseMatrix { /** * Returns the number of rows in this sparse matrix. - * @method SparseMatrix#nRows + * @method module:LinearAlgebra.SparseMatrix#nRows * @returns {number} */ nRows() { @@ -102,7 +102,7 @@ class SparseMatrix { /** * Returns the number of columns in this sparse matrix. - * @method SparseMatrix#nCols + * @method module:LinearAlgebra.SparseMatrix#nCols * @returns {number} */ nCols() { @@ -111,7 +111,7 @@ class SparseMatrix { /** * Returns the number of nonzero entries in this sparse matrix. - * @method SparseMatrix#nnz + * @method module:LinearAlgebra.SparseMatrix#nnz * @returns {number} */ nnz() { @@ -120,7 +120,7 @@ class SparseMatrix { /** * Computes the frobenius norm of this sparse matrix. - * @method SparseMatrix#frobeniusNorm + * @method module:LinearAlgebra.SparseMatrix#frobeniusNorm * @returns {number} */ frobeniusNorm() { @@ -130,39 +130,39 @@ class SparseMatrix { /** * Extracts a sparse sub-matrix in the range [r0, r1) x [c0, c1), i.e., a matrix * of size (r1 - r0) x (c1 - c0) starting at indices (r0, c0). - * @method SparseMatrix#subMatrix + * @method module:LinearAlgebra.SparseMatrix#subMatrix * @param {number} r0 The start row index. * @param {number} r1 The end row index (not included). * @param {number} c0 The start column index. * @param {number} c1 The end column index (not included). - * @returns {SparseMatrix} + * @returns {module:LinearAlgebra.SparseMatrix} */ subMatrix(r0, r1, c0, c1) { return new SparseMatrix(this.data.subMatrix(r0, r1, c0, c1)); } /** - * Returns a sparse {@link Cholesky} factorization of this sparse matrix. - * @method SparseMatrix#chol - * @returns {Cholesky} + * Returns a sparse {@link module:LinearAlgebra.Cholesky Cholesky} factorization of this sparse matrix. + * @method module:LinearAlgebra.SparseMatrix#chol + * @returns {module:LinearAlgebra.Cholesky} */ chol() { return new Cholesky(this.data.chol()); } /** - * Returns a sparse {@link LU} factorization of this sparse matrix. - * @method SparseMatrix#lu - * @returns {LU} + * Returns a sparse {@link module:LinearAlgebra.LU LU} factorization of this sparse matrix. + * @method module:LinearAlgebra.SparseMatrix#lu + * @returns {module:LinearAlgebra.LU} */ lu() { return new LU(this.data.lu()); } /** - * Returns a sparse {@link QR} factorization of this sparse matrix. - * @method SparseMatrix#qr - * @returns {QR} + * Returns a sparse {@link module:LinearAlgebra.QR QR} factorization of this sparse matrix. + * @method module:LinearAlgebra.SparseMatrix#qr + * @returns {module:LinearAlgebra.QR} */ qr() { return new QR(this.data.qr()); @@ -170,8 +170,8 @@ class SparseMatrix { /** * Returns a dense copy of this sparse matrix. - * @method SparseMatrix#toDense - * @returns {DenseMatrix} + * @method module:LinearAlgebra.SparseMatrix#toDense + * @returns {module:LinearAlgebra.DenseMatrix} */ toDense() { return new DenseMatrix(this.data.toDense()); @@ -179,8 +179,8 @@ class SparseMatrix { /** * A += B - * @method SparseMatrix#incrementBy - * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. + * @method module:LinearAlgebra.SparseMatrix#incrementBy + * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix added to this sparse matrix. */ incrementBy(B) { this.data.incrementBy(B.data); @@ -188,8 +188,8 @@ class SparseMatrix { /** * A -= B - * @method SparseMatrix#decrementBy - * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. + * @method module:LinearAlgebra.SparseMatrix#decrementBy + * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix subtracted from this sparse matrix. */ decrementBy(B) { this.data.decrementBy(B.data); @@ -197,7 +197,7 @@ class SparseMatrix { /** * A *= s - * @method SparseMatrix#scaleBy + * @method module:LinearAlgebra.SparseMatrix#scaleBy * @param {number} s The number this sparse matrix is scaled by. */ scaleBy(s) { @@ -206,9 +206,9 @@ class SparseMatrix { /** * Returns A + B - * @method SparseMatrix#plus - * @param {SparseMatrix} B The sparse matrix added to this sparse matrix. - * @returns {SparseMatrix} + * @method module:LinearAlgebra.SparseMatrix#plus + * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix added to this sparse matrix. + * @returns {module:LinearAlgebra.SparseMatrix} */ plus(B) { return new SparseMatrix(this.data.plus(B.data)); @@ -216,9 +216,9 @@ class SparseMatrix { /** * Returns A - B - * @method SparseMatrix#minus - * @param {SparseMatrix} B The sparse matrix subtracted from this sparse matrix. - * @returns {SparseMatrix} + * @method module:LinearAlgebra.SparseMatrix#minus + * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix subtracted from this sparse matrix. + * @returns {module:LinearAlgebra.SparseMatrix} */ minus(B) { return new SparseMatrix(this.data.minus(B.data)); @@ -226,9 +226,9 @@ class SparseMatrix { /** * Returns A * s - * @method SparseMatrix#timesReal + * @method module:LinearAlgebra.SparseMatrix#timesReal * @param {number} s The number this sparse matrix is multiplied by. - * @returns {SparseMatrix} + * @returns {module:LinearAlgebra.SparseMatrix} */ timesReal(s) { return new SparseMatrix(this.data.timesReal(s)); @@ -236,9 +236,9 @@ class SparseMatrix { /** * Returns A * X - * @method SparseMatrix#timesDense - * @param {DenseMatrix} X The dense matrix this sparse matrix is multiplied by. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.SparseMatrix#timesDense + * @param {module:LinearAlgebra.DenseMatrix} X The dense matrix this sparse matrix is multiplied by. + * @returns {module:LinearAlgebra.DenseMatrix} */ timesDense(X) { return new DenseMatrix(this.data.timesDense(X.data)); @@ -246,9 +246,9 @@ class SparseMatrix { /** * Returns A * B - * @method SparseMatrix#timesSparse - * @param {SparseMatrix} B The sparse matrix this sparse matrix is multiplied by. - * @returns {SparseMatrix} + * @method module:LinearAlgebra.SparseMatrix#timesSparse + * @param {module:LinearAlgebra.SparseMatrix} B The sparse matrix this sparse matrix is multiplied by. + * @returns {module:LinearAlgebra.SparseMatrix} */ timesSparse(B) { return new SparseMatrix(this.data.timesSparse(B.data)); @@ -257,9 +257,9 @@ class SparseMatrix { class Triplet { /** - * This class represents a small structure to hold nonzero entries in a {@link SparseMatrix}. + * This class represents a small structure to hold nonzero entries in a {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. * Each entry is a triplet of a value and the (i, j)th indices, i.e., (x, i, j). - * @constructor Triplet + * @constructor module:LinearAlgebra.Triplet * @param {number} m The number of rows in the sparse matrix that will be initialized * from this triplet. * @param {number} n The number of columns in the sparse matrix that will be initialized @@ -278,7 +278,7 @@ class Triplet { /** * Deletes the emscripten heap allocated data of this sparse matrix. - * @method Triplet#delete + * @method module:LinearAlgebra.Triplet#delete * @ignore */ delete() { @@ -287,7 +287,7 @@ class Triplet { /** * A(i, j) += x - * @method Triplet#addEntry + * @method module:LinearAlgebra.Triplet#addEntry * @param {number} x The value of the nonzero entry being inserted into this triplet. * @param {number} i The ith row of the sparse matrix that will be initialized * from this triplet. @@ -302,13 +302,13 @@ class Triplet { class Cholesky { /** * This class represents a Choleksy LL^T factorization of a square positive definite - * {@link SparseMatrix}. The factorization is computed on the first call to solvePositiveDefinite, + * {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. The factorization is computed on the first call to solvePositiveDefinite, * and is reused in subsequent calls to solvePositiveDefinite (e.g. when only the * right hand side b of the linear system Ax = b changes) unless the sparse matrix * itself is altered through operations such as *=, += and -=. Do not use the constructor * to initialize this class, instead access the Choleksy factorization of a sparse * matrix directly from the matrix itself. - * @constructor Cholesky + * @constructor module:LinearAlgebra.Cholesky * @example * // solve the linear system Ax = b, where A is a square positive definite sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -326,9 +326,9 @@ class Cholesky { /** * Solves the linear system Ax = b, where A is a square positive definite sparse matrix. - * @method Cholesky#solvePositiveDefinite - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.Cholesky#solvePositiveDefinite + * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.DenseMatrix} */ solvePositiveDefinite(b) { return new DenseMatrix(this.data.solvePositiveDefinite(b.data)); @@ -337,13 +337,13 @@ class Cholesky { class LU { /** - * This class represents a LU factorization of a square {@link SparseMatrix}. The factorization + * This class represents a LU factorization of a square {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. The factorization * is computed on the first call to solveSquare, and is reused in subsequent calls * to solveSquare (e.g. when only the right hand side b of the linear system Ax = b * changes) unless the sparse matrix itself is altered through operations such as * *=, += and -=. Do not use the constructor to initialize this class, instead * access the LU factorization of a sparse matrix directly from the matrix itself. - * @constructor LU + * @constructor module:LinearAlgebra.LU * @example * // solve the linear system Ax = b, where A is a square sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -361,9 +361,9 @@ class LU { /** * Solves the linear system Ax = b, where A is a square sparse matrix. - * @method LU#solveSquare - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.LU#solveSquare + * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.DenseMatrix} */ solveSquare(b) { return new DenseMatrix(this.data.solveSquare(b.data)); @@ -372,14 +372,14 @@ class LU { class QR { /** - * This class represents a QR factorization of a rectangular {@link SparseMatrix}. + * This class represents a QR factorization of a rectangular {@link module:LinearAlgebra.SparseMatrix SparseMatrix}. * The factorization is computed on the first call to solve, and is reused in * subsequent calls to solve (e.g. when only the right hand side b of the linear * system Ax = b changes) unless the sparse matrix itself is altered through * operations such as *=, += and -=. Do not use the constructor to initialize * this class, instead access the QR factorization of a sparse matrix directly * from the matrix itself. - * @constructor QR + * @constructor module:LinearAlgebra.QR * @example * // solve the linear system Ax = b, where A is a rectangular sparse matrix * let A = SparseMatrix.identity(5, 5); @@ -397,13 +397,11 @@ class QR { /** * Solves the linear system Ax = b, where A is a rectangular sparse matrix. - * @method QR#solve - * @param {DenseMatrix} b The dense right hand side of the linear system Ax = b. - * @returns {DenseMatrix} + * @method module:LinearAlgebra.QR#solve + * @param {module:LinearAlgebra.DenseMatrix} b The dense right hand side of the linear system Ax = b. + * @returns {module:LinearAlgebra.DenseMatrix} */ solve(b) { return new DenseMatrix(this.data.solve(b.data)); } } - -export { SparseMatrix, Triplet }; \ No newline at end of file diff --git a/linear-algebra/vector.js b/linear-algebra/vector.js index 17b0036..55849e5 100644 --- a/linear-algebra/vector.js +++ b/linear-algebra/vector.js @@ -14,7 +14,7 @@ class Vector { /** * This class represents an element of Euclidean 3-space, along with all the usual * vector space operations (addition, multiplication by scalars, etc.). - * @constructor Vector + * @constructor module:LinearAlgebra.Vector * @property {number} x The x component of this vector. Default value is 0. * @property {number} y The y component of this vector. Default value is 0. * @property {number} z The z component of this vector. Default value is 0. @@ -27,7 +27,7 @@ class Vector { /** * Computes the Euclidean length of this vector. - * @method Vector#norm + * @method module:LinearAlgebra.Vector#norm * @returns {number} */ norm() { @@ -36,7 +36,7 @@ class Vector { /** * Computes the Euclidean length squared of this vector. - * @method Vector#norm2 + * @method module:LinearAlgebra.Vector#norm2 * @returns {number} */ norm2() { @@ -45,7 +45,7 @@ class Vector { /** * Divides this vector by its Euclidean length. - * @method Vector#normalize + * @method module:LinearAlgebra.Vector#normalize */ normalize() { let n = this.norm(); @@ -56,8 +56,8 @@ class Vector { /** * Returns a normalized copy of this vector. - * @method Vector#unit - * @returns {Vector} + * @method module:LinearAlgebra.Vector#unit + * @returns {module:LinearAlgebra.Vector} */ unit() { let n = this.norm(); @@ -70,7 +70,7 @@ class Vector { /** * Checks whether this vector's components are finite. - * @method Vector#isValid + * @method module:LinearAlgebra.Vector#isValid * @returns {boolean} */ isValid() { @@ -80,8 +80,8 @@ class Vector { /** * u += v - * @method Vector#incrementBy - * @param {Vector} v The vector added to this vector. + * @method module:LinearAlgebra.Vector#incrementBy + * @param {module:LinearAlgebra.Vector} v The vector added to this vector. */ incrementBy(v) { this.x += v.x; @@ -91,8 +91,8 @@ class Vector { /** * u -= v - * @method Vector#decrementBy - * @param {Vector} v The vector subtracted from this vector. + * @method module:LinearAlgebra.Vector#decrementBy + * @param {module:LinearAlgebra.Vector} v The vector subtracted from this vector. */ decrementBy(v) { this.x -= v.x; @@ -102,7 +102,7 @@ class Vector { /** * u *= s - * @method Vector#scaleBy + * @method module:LinearAlgebra.Vector#scaleBy * @param {number} s The number this vector is scaled by. */ scaleBy(s) { @@ -113,7 +113,7 @@ class Vector { /** * u /= s - * @method Vector#divideBy + * @method module:LinearAlgebra.Vector#divideBy * @param {number} s The number this vector is divided by. */ divideBy(s) { @@ -122,9 +122,9 @@ class Vector { /** * Returns u + v - * @method Vector#plus - * @param {Vector} v The vector added to this vector. - * @return {Vector} + * @method module:LinearAlgebra.Vector#plus + * @param {module:LinearAlgebra.Vector} v The vector added to this vector. + * @return {module:LinearAlgebra.Vector} */ plus(v) { return new Vector(this.x + v.x, this.y + v.y, this.z + v.z); @@ -132,9 +132,9 @@ class Vector { /** * Returns u - v - * @method Vector#minus - * @param {Vector} v The vector subtracted from this vector. - * @return {Vector} + * @method module:LinearAlgebra.Vector#minus + * @param {module:LinearAlgebra.Vector} v The vector subtracted from this vector. + * @return {module:LinearAlgebra.Vector} */ minus(v) { return new Vector(this.x - v.x, this.y - v.y, this.z - v.z); @@ -142,9 +142,9 @@ class Vector { /** * Returns u * s - * @method Vector#times + * @method module:LinearAlgebra.Vector#times * @param {number} s The number this vector is multiplied by. - * @return {Vector} + * @return {module:LinearAlgebra.Vector} */ times(s) { return new Vector(this.x * s, this.y * s, this.z * s); @@ -152,9 +152,9 @@ class Vector { /** * Returns u / s - * @method Vector#over + * @method module:LinearAlgebra.Vector#over * @param {number} s The number this vector is divided by. - * @return {Vector} + * @return {module:LinearAlgebra.Vector} */ over(s) { return this.times(1 / s); @@ -162,8 +162,8 @@ class Vector { /** * Returns -u - * @method Vector#negated - * @return {Vector} + * @method module:LinearAlgebra.Vector#negated + * @return {module:LinearAlgebra.Vector} */ negated() { return this.times(-1); @@ -171,8 +171,8 @@ class Vector { /** * Computes the dot product of this vector and v - * @method Vector#dot - * @param {Vector} v The vector this vector is dotted with. + * @method module:LinearAlgebra.Vector#dot + * @param {module:LinearAlgebra.Vector} v The vector this vector is dotted with. * @return {number} */ dot(v) { @@ -181,9 +181,9 @@ class Vector { /** * Computes the cross product of this vector and v - * @method Vector#cross - * @param {Vector} v The vector this vector is crossed with. - * @return {Vector} + * @method module:LinearAlgebra.Vector#cross + * @param {module:LinearAlgebra.Vector} v The vector this vector is crossed with. + * @return {module:LinearAlgebra.Vector} */ cross(v) { return new Vector( From 6861b6b15611ce1915e2ac7e5af65101cd5345d3 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 13:41:38 -0800 Subject: [PATCH 24/33] Fix Trivial Connections Link --- projects/direction-field-design/trivial-connections.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/direction-field-design/trivial-connections.js b/projects/direction-field-design/trivial-connections.js index 1e02f76..53ecfd9 100644 --- a/projects/direction-field-design/trivial-connections.js +++ b/projects/direction-field-design/trivial-connections.js @@ -9,7 +9,7 @@ import { indexElements } from '../../core/mesh.js'; class TrivialConnections { /** - * This class implements the {@link https://www.cs.cmu.edu/~kmcrane/Projects/DDG/paper.pdf trivial connections} algorithm to compute a smooth + * This class implements the {@link https://cs.cmu.edu/~kmcrane/Projects/TrivialConnections trivial connections} algorithm to compute a smooth * 1-form vector fields on a surface mesh. * @constructor module:Projects.TrivialConnections * @param {module:Core.Geometry} geometry The input geometry of the mesh this class acts on. From bad0fe21eae88c362de00dc6a46c6f53d8811e92 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 14:09:17 -0800 Subject: [PATCH 25/33] Fix Sparse Matrix Exports --- linear-algebra/sparse-matrix.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linear-algebra/sparse-matrix.js b/linear-algebra/sparse-matrix.js index f901057..ac750d7 100644 --- a/linear-algebra/sparse-matrix.js +++ b/linear-algebra/sparse-matrix.js @@ -405,3 +405,5 @@ class QR { return new DenseMatrix(this.data.solve(b.data)); } } + +export { SparseMatrix, Triplet }; \ No newline at end of file From 6b5102dc7de22ba81a3c3dd3a900bb6031c7ba1a Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 14:30:48 -0800 Subject: [PATCH 26/33] Make Doc Rebuilding Automatic --- .github/workflows/main.yml | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 48e63f0..2f02b26 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: geometry-processing - Run Tests +name: geometry-processing - Continuous Integration on: push @@ -21,3 +21,39 @@ jobs: - name: Run Unit Tests timeout-minutes: 5 run: npm test + + docs: + name: Build Docs + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + with: + lfs: true + + - name: Install Doc Generation Frameworks + run: | + echo '{ "type": "module", "scripts": { "docs": "jsdoc -c doc-config/jsdoc.conf.json -t node_modules/ink-docstrap/template/ -R README.md -r -d docs ./" } }' >package.json + npm install --save-dev jsdoc ink-docstrap + + - name: Pre-Process Docs + run: | + cp doc-config/site.cosmo-rohan.css node_modules/ink-docstrap/template/static/styles/site.cosmo-rohan.css + + - name: Generate Docs + run: npm run docs + + # New JSDoc appears to do this automatically + #- name: Post-Process Docs + # run: sed 's/foo/bar/g' docs/index.html + + - name: Commit Updated Docs + run: | + git add docs + git diff-index --quiet HEAD || git commit -m "Rebuild Docs" + + - name: Push Changes to branch + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} \ No newline at end of file From f3d6d0fbc95cad092a4bffc330dc88f330471d54 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Sun, 14 Feb 2021 14:33:49 -0800 Subject: [PATCH 27/33] Create a Doc Author when Committing Updated Docs --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2f02b26..6d07fa0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -49,6 +49,8 @@ jobs: - name: Commit Updated Docs run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Actions" git add docs git diff-index --quiet HEAD || git commit -m "Rebuild Docs" From 8a206e6a2831db823a7ada47e7a0cd6f046dadfd Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Sun, 14 Feb 2021 22:35:00 +0000 Subject: [PATCH 28/33] Rebuild Docs --- docs/classes.list.html | 6 +- docs/global.html | 75 +--------- docs/index.html | 16 +- docs/module-Core.Corner.html | 6 +- docs/module-Core.DEC.html | 8 +- docs/module-Core.Edge.html | 6 +- docs/module-Core.Face.html | 6 +- docs/module-Core.Geometry.html | 8 +- docs/module-Core.Halfedge.html | 6 +- docs/module-Core.Mesh.html | 6 +- docs/module-Core.MeshSubset.html | 6 +- docs/module-Core.Vertex.html | 6 +- docs/module-Core.html | 6 +- docs/module-LinearAlgebra.Cholesky.html | 6 +- docs/module-LinearAlgebra.Complex.html | 6 +- .../module-LinearAlgebra.ComplexCholesky.html | 6 +- ...dule-LinearAlgebra.ComplexDenseMatrix.html | 6 +- docs/module-LinearAlgebra.ComplexLU.html | 6 +- docs/module-LinearAlgebra.ComplexQR.html | 6 +- ...ule-LinearAlgebra.ComplexSparseMatrix.html | 6 +- docs/module-LinearAlgebra.ComplexTriplet.html | 6 +- docs/module-LinearAlgebra.DenseMatrix.html | 6 +- ...LinearAlgebra.EmscriptenMemoryManager.html | 6 +- docs/module-LinearAlgebra.LU.html | 6 +- docs/module-LinearAlgebra.QR.html | 6 +- docs/module-LinearAlgebra.SparseMatrix.html | 6 +- docs/module-LinearAlgebra.Triplet.html | 6 +- docs/module-LinearAlgebra.Vector.html | 6 +- docs/module-LinearAlgebra.html | 6 +- ...dule-Projects.BoundaryFirstFlattening.html | 6 +- docs/module-Projects.HarmonicBases.html | 8 +- docs/module-Projects.HeatMethod.html | 8 +- docs/module-Projects.HodgeDecomposition.html | 8 +- docs/module-Projects.MeanCurvatureFlow.html | 8 +- ...le-Projects.ModifiedMeanCurvatureFlow.html | 8 +- .../module-Projects.ScalarPoissonProblem.html | 8 +- ...e-Projects.SimplicialComplexOperators.html | 6 +- ...cts.SpectralConformalParameterization.html | 8 +- docs/module-Projects.TreeCotree.html | 8 +- docs/module-Projects.TrivialConnections.html | 6 +- docs/module-Projects.html | 6 +- docs/module-Utils.Distortion.html | 6 +- docs/module-Utils.MeshIO.html | 6 +- docs/module-Utils.Solvers.html | 6 +- docs/module-Utils.html | 6 +- docs/modules.list.html | 6 +- docs/quicksearch.html | 2 +- docs/styles/site.cosmo.css | 140 +++++++++--------- 48 files changed, 223 insertions(+), 294 deletions(-) diff --git a/docs/classes.list.html b/docs/classes.list.html index d18a082..4728373 100644 --- a/docs/classes.list.html +++ b/docs/classes.list.html @@ -47,7 +47,7 @@ @@ -318,9 +318,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/global.html b/docs/global.html index 5fee076..c74e59e 100644 --- a/docs/global.html +++ b/docs/global.html @@ -47,7 +47,7 @@ @@ -152,75 +152,6 @@

-

Members

- -
- -
-
-

Detector

- - -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - -
Author:
-
-
    -
  • alteredq / http://alteredqualia.com/
  • - -
  • mr.doob / http://mrdoob.com/
  • -
-
- - - - - - - - - - - - - - - - - -
- - - -
- -
-

Methods

@@ -1226,9 +1157,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/index.html b/docs/index.html index c7fc504..66f37c2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -47,7 +47,7 @@ @@ -101,7 +101,7 @@
- +

geometry-processing-js

geometry-processing-js is a fast and flexible framework for 3D geometry processing on the web! Easy integration with HTML/WebGL makes it particularly suitable for things like mobile apps, online demos, and course content. For many tasks, performance comes within striking distance of native (C++) code. Plus, since the framework is pure JavaScript, no compilation or installation is necessary: just copy the files and run from any web browser, on any platform (including mobile). Moreover, geometry processing algorithms can be edited in the browser (using for instance the JavaScript Console in Chrome). So open up one of the demos and start editing! geometry-processing-js is developed by and maintained by the Geometry Collective at Carnegie Mellon University.

@@ -147,9 +147,7 @@

Dependencies (all included)

About Javascript

The implementation of geometry-processing-js attempts to minimize the use of obscure Javascript language features. It should not be too difficult for anyone with experience in a dynamic language like Python or familiar with the principles of Object Oriented Programming to get a handle on Javascript syntax by reading through some of the code in this framework. The documentation contains examples specific to this framework which will also be of help. For a more formal introduction to Javascript, checkout this really nice tutorial.

Building the Documentation

-

This documentation was generated using jsdoc and ink-docstrap. We used a modified version of the cosmo theme. After installing jsdoc and ink-docstrap, you can build the documentation by running

-
jsdoc -c node_modules/ink-docstrap/template/jsdoc.conf.json -t node_modules/ink-docstrap/template/ -R geometry-processing-js/README.md -r -d geometry-processing-js/docs
-
+

See guide here.

Authors

Rohan Sawhney

Email: rohansawhney@cs.cmu.edu

@@ -160,7 +158,7 @@

License

MIT

- +

@@ -206,9 +204,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. @@ -299,4 +297,4 @@ - + \ No newline at end of file diff --git a/docs/module-Core.Corner.html b/docs/module-Core.Corner.html index 500a12b..60aa131 100644 --- a/docs/module-Core.Corner.html +++ b/docs/module-Core.Corner.html @@ -47,7 +47,7 @@ @@ -578,9 +578,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.DEC.html b/docs/module-Core.DEC.html index b38f1e4..466008a 100644 --- a/docs/module-Core.DEC.html +++ b/docs/module-Core.DEC.html @@ -47,7 +47,7 @@ @@ -90,7 +90,7 @@

DEC

-

This class contains methods to build common discrete exterior calculus operators.

+

This class contains methods to build common discrete exterior calculus operators.

@@ -1148,9 +1148,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Edge.html b/docs/module-Core.Edge.html index 5edaa0f..f4f21b0 100644 --- a/docs/module-Core.Edge.html +++ b/docs/module-Core.Edge.html @@ -47,7 +47,7 @@ @@ -391,9 +391,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Face.html b/docs/module-Core.Face.html index bc1ddec..97334e2 100644 --- a/docs/module-Core.Face.html +++ b/docs/module-Core.Face.html @@ -47,7 +47,7 @@ @@ -1180,9 +1180,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Geometry.html b/docs/module-Core.Geometry.html index 7d744b0..0383c97 100644 --- a/docs/module-Core.Geometry.html +++ b/docs/module-Core.Geometry.html @@ -47,7 +47,7 @@ @@ -2465,7 +2465,7 @@
Parameters:
See:
@@ -4589,9 +4589,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Halfedge.html b/docs/module-Core.Halfedge.html index f57da98..0eb3a20 100644 --- a/docs/module-Core.Halfedge.html +++ b/docs/module-Core.Halfedge.html @@ -47,7 +47,7 @@ @@ -457,9 +457,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Mesh.html b/docs/module-Core.Mesh.html index a87941a..749c4c1 100644 --- a/docs/module-Core.Mesh.html +++ b/docs/module-Core.Mesh.html @@ -47,7 +47,7 @@ @@ -765,9 +765,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.MeshSubset.html b/docs/module-Core.MeshSubset.html index 51d98aa..f967220 100644 --- a/docs/module-Core.MeshSubset.html +++ b/docs/module-Core.MeshSubset.html @@ -47,7 +47,7 @@ @@ -2512,9 +2512,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.Vertex.html b/docs/module-Core.Vertex.html index 28cd23c..ac5ffc1 100644 --- a/docs/module-Core.Vertex.html +++ b/docs/module-Core.Vertex.html @@ -47,7 +47,7 @@ @@ -1372,9 +1372,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Core.html b/docs/module-Core.html index 43cdb21..3760dfd 100644 --- a/docs/module-Core.html +++ b/docs/module-Core.html @@ -47,7 +47,7 @@ @@ -244,9 +244,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.Cholesky.html b/docs/module-LinearAlgebra.Cholesky.html index f27725b..a6dd9fa 100644 --- a/docs/module-LinearAlgebra.Cholesky.html +++ b/docs/module-LinearAlgebra.Cholesky.html @@ -47,7 +47,7 @@ @@ -408,9 +408,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.Complex.html b/docs/module-LinearAlgebra.Complex.html index f32d13e..b4067fa 100644 --- a/docs/module-LinearAlgebra.Complex.html +++ b/docs/module-LinearAlgebra.Complex.html @@ -47,7 +47,7 @@ @@ -2035,9 +2035,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexCholesky.html b/docs/module-LinearAlgebra.ComplexCholesky.html index 1b2b2cd..6f68e8e 100644 --- a/docs/module-LinearAlgebra.ComplexCholesky.html +++ b/docs/module-LinearAlgebra.ComplexCholesky.html @@ -47,7 +47,7 @@ @@ -411,9 +411,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexDenseMatrix.html b/docs/module-LinearAlgebra.ComplexDenseMatrix.html index e9b8894..36aa243 100644 --- a/docs/module-LinearAlgebra.ComplexDenseMatrix.html +++ b/docs/module-LinearAlgebra.ComplexDenseMatrix.html @@ -47,7 +47,7 @@ @@ -3818,9 +3818,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexLU.html b/docs/module-LinearAlgebra.ComplexLU.html index 8ddc9b2..1fde03b 100644 --- a/docs/module-LinearAlgebra.ComplexLU.html +++ b/docs/module-LinearAlgebra.ComplexLU.html @@ -47,7 +47,7 @@ @@ -408,9 +408,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexQR.html b/docs/module-LinearAlgebra.ComplexQR.html index 1df0015..dc7d12e 100644 --- a/docs/module-LinearAlgebra.ComplexQR.html +++ b/docs/module-LinearAlgebra.ComplexQR.html @@ -47,7 +47,7 @@ @@ -408,9 +408,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexSparseMatrix.html b/docs/module-LinearAlgebra.ComplexSparseMatrix.html index e24f8b2..60338fc 100644 --- a/docs/module-LinearAlgebra.ComplexSparseMatrix.html +++ b/docs/module-LinearAlgebra.ComplexSparseMatrix.html @@ -47,7 +47,7 @@ @@ -3155,9 +3155,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.ComplexTriplet.html b/docs/module-LinearAlgebra.ComplexTriplet.html index 339a670..cb59344 100644 --- a/docs/module-LinearAlgebra.ComplexTriplet.html +++ b/docs/module-LinearAlgebra.ComplexTriplet.html @@ -47,7 +47,7 @@ @@ -506,9 +506,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.DenseMatrix.html b/docs/module-LinearAlgebra.DenseMatrix.html index c1ed7d7..fa46af2 100644 --- a/docs/module-LinearAlgebra.DenseMatrix.html +++ b/docs/module-LinearAlgebra.DenseMatrix.html @@ -47,7 +47,7 @@ @@ -3717,9 +3717,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.EmscriptenMemoryManager.html b/docs/module-LinearAlgebra.EmscriptenMemoryManager.html index 6b072b9..c8da080 100644 --- a/docs/module-LinearAlgebra.EmscriptenMemoryManager.html +++ b/docs/module-LinearAlgebra.EmscriptenMemoryManager.html @@ -47,7 +47,7 @@ @@ -445,9 +445,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.LU.html b/docs/module-LinearAlgebra.LU.html index eb2fdcf..ef6109b 100644 --- a/docs/module-LinearAlgebra.LU.html +++ b/docs/module-LinearAlgebra.LU.html @@ -47,7 +47,7 @@ @@ -407,9 +407,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.QR.html b/docs/module-LinearAlgebra.QR.html index 0386d36..f9b33fc 100644 --- a/docs/module-LinearAlgebra.QR.html +++ b/docs/module-LinearAlgebra.QR.html @@ -47,7 +47,7 @@ @@ -408,9 +408,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.SparseMatrix.html b/docs/module-LinearAlgebra.SparseMatrix.html index f9a3b4c..ae407fc 100644 --- a/docs/module-LinearAlgebra.SparseMatrix.html +++ b/docs/module-LinearAlgebra.SparseMatrix.html @@ -47,7 +47,7 @@ @@ -3051,9 +3051,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.Triplet.html b/docs/module-LinearAlgebra.Triplet.html index f314d64..1cb6aee 100644 --- a/docs/module-LinearAlgebra.Triplet.html +++ b/docs/module-LinearAlgebra.Triplet.html @@ -47,7 +47,7 @@ @@ -505,9 +505,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.Vector.html b/docs/module-LinearAlgebra.Vector.html index e92f610..c75e793 100644 --- a/docs/module-LinearAlgebra.Vector.html +++ b/docs/module-LinearAlgebra.Vector.html @@ -47,7 +47,7 @@ @@ -2310,9 +2310,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-LinearAlgebra.html b/docs/module-LinearAlgebra.html index 7aaa0e3..5241e3e 100644 --- a/docs/module-LinearAlgebra.html +++ b/docs/module-LinearAlgebra.html @@ -47,7 +47,7 @@ @@ -252,9 +252,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.BoundaryFirstFlattening.html b/docs/module-Projects.BoundaryFirstFlattening.html index f5c470d..389d859 100644 --- a/docs/module-Projects.BoundaryFirstFlattening.html +++ b/docs/module-Projects.BoundaryFirstFlattening.html @@ -47,7 +47,7 @@ @@ -962,9 +962,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.HarmonicBases.html b/docs/module-Projects.HarmonicBases.html index 41f309a..1e1c1c1 100644 --- a/docs/module-Projects.HarmonicBases.html +++ b/docs/module-Projects.HarmonicBases.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

new Harm
-

This class computes the harmonic bases of a surface mesh.

+

This class computes the harmonic bases of a surface mesh.

@@ -440,9 +440,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.HeatMethod.html b/docs/module-Projects.HeatMethod.html index a1ae40d..f17d6b7 100644 --- a/docs/module-Projects.HeatMethod.html +++ b/docs/module-Projects.HeatMethod.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

new HeatMet
-

This class implements the heat method to compute geodesic distance
+

This class implements the heat method to compute geodesic distance
on a surface mesh.

@@ -565,9 +565,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.HodgeDecomposition.html b/docs/module-Projects.HodgeDecomposition.html index aeb0b00..13f5fba 100644 --- a/docs/module-Projects.HodgeDecomposition.html +++ b/docs/module-Projects.HodgeDecomposition.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

new
-

This class computes the hodge decomposition of a vector field on a surface mesh.

+

This class computes the hodge decomposition of a vector field on a surface mesh.

@@ -1083,9 +1083,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.MeanCurvatureFlow.html b/docs/module-Projects.MeanCurvatureFlow.html index 2dabf2e..67d5e3f 100644 --- a/docs/module-Projects.MeanCurvatureFlow.html +++ b/docs/module-Projects.MeanCurvatureFlow.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

new
-

This class performs mean curvature flow on a surface mesh.

+

This class performs mean curvature flow on a surface mesh.

@@ -495,9 +495,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.ModifiedMeanCurvatureFlow.html b/docs/module-Projects.ModifiedMeanCurvatureFlow.html index d84b671..e7e7471 100644 --- a/docs/module-Projects.ModifiedMeanCurvatureFlow.html +++ b/docs/module-Projects.ModifiedMeanCurvatureFlow.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@
- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.ScalarPoissonProblem.html b/docs/module-Projects.ScalarPoissonProblem.html index 4a2a06d..1ef929e 100644 --- a/docs/module-Projects.ScalarPoissonProblem.html +++ b/docs/module-Projects.ScalarPoissonProblem.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

n
-

This class solves a scalar poisson problem on a surface mesh.

+

This class solves a scalar poisson problem on a surface mesh.

@@ -564,9 +564,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.SimplicialComplexOperators.html b/docs/module-Projects.SimplicialComplexOperators.html index af22d07..54945a6 100644 --- a/docs/module-Projects.SimplicialComplexOperators.html +++ b/docs/module-Projects.SimplicialComplexOperators.html @@ -47,7 +47,7 @@ @@ -2197,9 +2197,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.SpectralConformalParameterization.html b/docs/module-Projects.SpectralConformalParameterization.html index a5e8824..1f8cb98 100644 --- a/docs/module-Projects.SpectralConformalParameterization.html +++ b/docs/module-Projects.SpectralConformalParameterization.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

-

This class implements the spectral conformal parameterization algorithm to flatten
+

This class implements the spectral conformal parameterization algorithm to flatten
surface meshes with boundaries conformally.

@@ -470,9 +470,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.TreeCotree.html b/docs/module-Projects.TreeCotree.html index 1a936ca..ff796c9 100644 --- a/docs/module-Projects.TreeCotree.html +++ b/docs/module-Projects.TreeCotree.html @@ -47,7 +47,7 @@ @@ -108,7 +108,7 @@

new TreeCot
-

This class computes the tree cotree decomposition of a surface mesh
+

This class computes the tree cotree decomposition of a surface mesh
to build its homology generators.

@@ -473,9 +473,9 @@

- Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.TrivialConnections.html b/docs/module-Projects.TrivialConnections.html index dd0a8f7..4c6cdf5 100644 --- a/docs/module-Projects.TrivialConnections.html +++ b/docs/module-Projects.TrivialConnections.html @@ -47,7 +47,7 @@ @@ -638,9 +638,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Projects.html b/docs/module-Projects.html index ea67f6b..b088038 100644 --- a/docs/module-Projects.html +++ b/docs/module-Projects.html @@ -47,7 +47,7 @@ @@ -232,9 +232,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Utils.Distortion.html b/docs/module-Utils.Distortion.html index d695806..4865b8f 100644 --- a/docs/module-Utils.Distortion.html +++ b/docs/module-Utils.Distortion.html @@ -47,7 +47,7 @@ @@ -633,9 +633,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Utils.MeshIO.html b/docs/module-Utils.MeshIO.html index 491f910..7bec991 100644 --- a/docs/module-Utils.MeshIO.html +++ b/docs/module-Utils.MeshIO.html @@ -47,7 +47,7 @@ @@ -669,9 +669,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Utils.Solvers.html b/docs/module-Utils.Solvers.html index dec1500..e8165b5 100644 --- a/docs/module-Utils.Solvers.html +++ b/docs/module-Utils.Solvers.html @@ -47,7 +47,7 @@ @@ -716,9 +716,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/module-Utils.html b/docs/module-Utils.html index 0e6f99e..d05f053 100644 --- a/docs/module-Utils.html +++ b/docs/module-Utils.html @@ -47,7 +47,7 @@ @@ -208,9 +208,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/modules.list.html b/docs/modules.list.html index 87a3855..6c7271e 100644 --- a/docs/modules.list.html +++ b/docs/modules.list.html @@ -47,7 +47,7 @@ @@ -318,9 +318,9 @@ - Documentation generated by JSDoc 3.6.3 + Documentation generated by JSDoc 3.6.6 - on Mon Jan 13th 2020 + on Sun Feb 14th 2021 using the DocStrap template. diff --git a/docs/quicksearch.html b/docs/quicksearch.html index 621668c..16c650f 100644 --- a/docs/quicksearch.html +++ b/docs/quicksearch.html @@ -7,7 +7,7 @@

-

This class performs a modified version of mean curvature flow on a surface mesh.

+

This class performs a modified version of mean curvature flow on a surface mesh.

@@ -491,9 +491,9 @@