From 41e5f12559d1ec4bbb23a47bc06360e10ab88949 Mon Sep 17 00:00:00 2001 From: J08nY Date: Sun, 17 Apr 2016 19:53:06 +0200 Subject: train work --- game.js | 175 +++++++++++++++++++++++++++++++++++++++++-------- game.js.map | 2 +- game.ts | 193 ++++++++++++++++++++++++++++++++++++++++++++++--------- index.css | 4 ++ index.html | 5 +- physi_js/ammo.js | 32 +-------- 6 files changed, 320 insertions(+), 91 deletions(-) diff --git a/game.js b/game.js index bd8b1d0..1412173 100644 --- a/game.js +++ b/game.js @@ -10,6 +10,7 @@ var __extends = (this && this.__extends) || function (d, b) { var Vector3 = THREE.Vector3; var Material = THREE.Material; var Geometry = THREE.Geometry; +var smoothstep = THREE.Math.smoothstep; //wtf fix.. Physijs.scripts.worker = "physi_js/physijs_worker.js"; Physijs.scripts.ammo = "ammo.js"; @@ -30,7 +31,6 @@ var PointerLock = (function () { if (_this.game.state == GameState.INITIALIZED || _this.game.state == GameState.PAUSED) { _this.game.start(); } - console.log("gained"); } else { //lost @@ -42,7 +42,6 @@ var PointerLock = (function () { if (_this.game.state == GameState.STARTED) { _this.game.pause(); } - console.log("lost"); } }; this.onError = function (event) { @@ -182,15 +181,53 @@ var Mouse = (function () { }; return Mouse; }()); +var Poly = (function (_super) { + __extends(Poly, _super); + function Poly(pos) { + var _this = this; + _super.call(this, Poly.generateGeometry(), Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x10a010 + }), 1, 1), 0.1); + this.pos = pos; + this.addEventListener("ready", function () { return _this.init(); }); + } + Poly.prototype.init = function () { + //launch the poly into space + this.position.copy(this.pos); + this.setLinearVelocity(Poly.generateDirection().normalize()); + }; + Poly.generateDirection = function () { + var verts = []; + for (var i = 0; i < 3; i++) { + verts.push(Math.random()); + } + return new Vector3().fromArray(verts); + }; + Poly.generateGeometry = function () { + //generate two random verts, construct a triangle + var geom = new THREE.Geometry(); + geom.vertices.push(new Vector3()); + geom.vertices.push(Poly.generateDirection()); + geom.vertices.push(Poly.generateDirection()); + geom.faces.push(new THREE.Face3(0, 1, 2)); + return geom; + }; + return Poly; +}(Physijs.PlaneMesh)); /** * */ var Morph = (function (_super) { __extends(Morph, _super); function Morph(level, material, mass) { + var _this = this; _super.call(this, Morph.generateGeometry(level), material, mass); this.level = level; + this.radius = this.geometry.boundingSphere.radius; + this.addEventListener("ready", function () { return _this.init(); }); } + Morph.prototype.init = function () { + }; Morph.generateGeometry = function (level) { var numFaces = Morph.levels[level]; switch (numFaces) { @@ -199,15 +236,17 @@ var Morph = (function (_super) { case 6: return new THREE.BoxGeometry(1, 1, 1, 1, 1, 1); case 12: - return new THREE.DodecahedronGeometry(1, 0); - case 20: return new THREE.IcosahedronGeometry(1, 0); + case 20: + return new THREE.DodecahedronGeometry(1, 0); default: return new THREE.TetrahedronGeometry(); } }; Morph.prototype.updateGeometry = function () { this.geometry = Morph.generateGeometry(this.level); + this.geometry.computeBoundingSphere(); + this.radius = this.geometry.boundingSphere.radius; }; Morph.prototype.shrink = function () { if (this.level > 0) { @@ -221,6 +260,9 @@ var Morph = (function (_super) { this.updateGeometry(); } }; + Morph.prototype.collides = function (other) { + return this.position.clone().sub(other.position).length() < this.radius + other.radius; + }; Morph.levels = [4, 6, 12, 20]; return Morph; }(Physijs.SphereMesh)); @@ -238,7 +280,11 @@ var Projectile = (function (_super) { this.time = 0; this.position.copy(pos.clone().add(dir.clone().setLength(2))); } - Projectile.prototype.shoot = function () { + Projectile.prototype.init = function () { + this.launch(); + }; + ; + Projectile.prototype.launch = function () { this.setLinearVelocity(this.dir); }; Projectile.prototype.tick = function (delta) { @@ -246,6 +292,21 @@ var Projectile = (function (_super) { }; return Projectile; }(Morph)); +var LiveMorph = (function (_super) { + __extends(LiveMorph, _super); + function LiveMorph() { + _super.apply(this, arguments); + this.life = 100; + } + LiveMorph.prototype.damage = function (by) { + if (this.isAlive()) + this.life -= by; + }; + LiveMorph.prototype.isAlive = function () { + return this.life > 0; + }; + return LiveMorph; +}(Morph)); /** * */ @@ -253,30 +314,47 @@ var Enemy = (function (_super) { __extends(Enemy, _super); function Enemy() { _super.call(this, 0, Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: 0xb02000 + color: 0xa01b00 }), .8, .6), 2); - this.speed = 10; + this.speed = 20; } Enemy.prototype.approach = function (player) { var toPlayer = player.position.clone().sub(this.position).normalize(); this.setLinearVelocity(toPlayer.setLength(this.speed)); }; + Enemy.prototype.die = function () { + var polys = []; + var amount = Math.floor(Math.random() * 10); + for (var i = 0; i < amount; i++) { + var poly = new Poly(this.position); + polys.push(poly); + } + return polys; + }; return Enemy; -}(Morph)); +}(LiveMorph)); var Player = (function (_super) { __extends(Player, _super); function Player() { _super.call(this, 1, Physijs.createMaterial(new THREE.MeshBasicMaterial({ color: 0x00a0b0 }), 1, 0.1), 0.5); + this.minus = 0; + this.plus = 0; + this.speed = 25; this.forward = new Vector3(0, 0, -1); this.upward = new Vector3(0, 1, 0); - this.camera = new Vector3(0, 10, 10); + this.camera = new Vector3(0, 7, 10); this.heading = 0; this.pitch = 0; - this.speed = 25; this.projectiles = []; + this.listener = new THREE.AudioListener(); + this.add(this.listener); } + Player.prototype.init = function () { + this.castShadow = true; + this.setDamping(0.05, 0.05); + }; Player.prototype.jump = function () { this.applyCentralImpulse(new Vector3(0, 8, 0)); }; @@ -292,16 +370,19 @@ var Player = (function (_super) { } }; Player.prototype.getRight = function () { - return this.getDirection().cross(this.upward).normalize(); + return this.getForward().cross(this.upward).normalize(); }; Player.prototype.getDirection = function () { + return this.getForward().applyAxisAngle(this.getRight(), this.pitch); + }; + Player.prototype.getForward = function () { return this.forward.clone().applyAxisAngle(this.upward, this.heading); }; Player.prototype.getCamera = function () { return this.camera.clone().applyAxisAngle(this.upward, this.heading).applyAxisAngle(this.getRight(), this.pitch); }; return Player; -}(Morph)); +}(LiveMorph)); var World = (function (_super) { __extends(World, _super); function World(player) { @@ -310,15 +391,13 @@ var World = (function (_super) { this.mobs = []; this.projectiles = []; this.setGravity(new THREE.Vector3(0, -40, 0)); + player.position.set(0, player.radius, 0); this.add(player); - player.position.set(0, 2, 0); - player.castShadow = true; - player.setDamping(0.05, 0.05); for (var i = 0; i < 10; i++) { var enemy = new Enemy(); var x = Math.floor(Math.random() * 20 + 3); var z = Math.floor(Math.random() * 20 + 3); - enemy.position.set(x, 2, z); + enemy.position.set(x, enemy.radius, z); this.add(enemy); this.mobs.push(enemy); } @@ -348,24 +427,48 @@ var World = (function (_super) { var projectile = this.player.projectiles.pop(); this.projectiles.push(projectile); this.add(projectile); - projectile.shoot(); } //enemy movement this.mobs.forEach(function (mob) { mob.approach(_this.player); + if (mob.collides(_this.player)) { + //collide? + _this.player.damage((mob.level + 1) * 3); + } }); - //tick projectiles and remove them if time out - //todo fix projectile removal, now ammojs spams obj s undefined - /* - this.projectiles.filter((projectile) => { + //tick projectiles and remove them if time out/on hit + this.projectiles = this.projectiles.filter(function (projectile) { projectile.tick(delta); - let keep = projectile.time < 10 * 1000; + var keep = projectile.time < 10 * 1000; + var collided = false; if (!keep) { - this.remove(projectile); + _this.remove(projectile); + } + else { + for (var _i = 0, _a = _this.mobs; _i < _a.length; _i++) { + var mob = _a[_i]; + if (mob.collides(projectile)) { + collided = true; + if (mob.level == projectile.level) { + mob.damage((projectile.level + 1) * 10); + } + break; + } + } } - return keep; + return keep && !collided; + }); + this.mobs = this.mobs.filter(function (mob) { + var alive = mob.isAlive(); + if (!alive) { + var polys = mob.die(); + polys.forEach(function (poly) { + _this.add(poly); + }); + _this.remove(mob); + } + return alive; }); - */ //physijs this.simulate(delta, 1); }; @@ -432,7 +535,7 @@ var Game = (function () { this.camera.position.addVectors(this.player.position, this.player.getCamera()); this.camera.lookAt(this.player.position); //player movement - var forward = this.player.getDirection(); + var forward = this.player.getForward(); forward.setLength(this.player.speed); var right = forward.clone().cross(this.player.upward); right.setLength(this.player.speed); @@ -463,7 +566,15 @@ var Game = (function () { console.log("jump"); this.player.jump(); } + //debug shoot + if (this.keyboard.down("C")) { + this.player.click(THREE.MOUSE.LEFT); + } this.world.tick(delta); + //die! + if (!this.player.isAlive()) { + this.stop(); + } }; Game.prototype.run = function (timestamp) { var _this = this; @@ -507,13 +618,21 @@ var Game = (function () { this.mouse.unregister(); this.keepRunning = false; }; - Game.prototype.stop = function () { + Game.prototype.stop = function (result) { + if (result === void 0) { result = false; } this.pause(); this.state = GameState.STOPPED; this.mouse.unregister(); this.keyboard.unregister(); window.removeEventListener("resize", this.onWindowResize, false); - //todo + var blocker = document.getElementById("block"); + blocker.style.display = '-webkit-box'; + blocker.style.display = '-moz-box'; + blocker.style.display = 'box'; + var instructions = document.getElementById("instructions"); + instructions.style.fontSize = "40px"; + instructions.innerHTML = result ? "You won!" : "You lost!"; + instructions.style.display = ""; }; return Game; }()); diff --git a/game.js.map b/game.js.map index 2830ecb..236417e 100644 --- a/game.js.map +++ b/game.js.map @@ -1 +1 @@ -{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/game.ts b/game.ts index 52fe2a5..820d525 100644 --- a/game.ts +++ b/game.ts @@ -6,6 +6,7 @@ import Vector3 = THREE.Vector3; import Material = THREE.Material; import Geometry = THREE.Geometry; +import smoothstep = THREE.Math.smoothstep; //wtf fix.. Physijs.scripts.worker = "physi_js/physijs_worker.js"; @@ -45,7 +46,6 @@ class PointerLock { if (this.game.state == GameState.INITIALIZED || this.game.state == GameState.PAUSED) { this.game.start(); } - console.log("gained"); } else { //lost this.hasLock = false; @@ -57,7 +57,6 @@ class PointerLock { if (this.game.state == GameState.STARTED) { this.game.pause(); } - console.log("lost"); } }; @@ -206,14 +205,60 @@ class Mouse { } } +class Poly extends Physijs.PlaneMesh { + + constructor(private pos:Vector3) { + super(Poly.generateGeometry(), + Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x10a010 + }), + 1, + 1 + ), + 0.1); + this.addEventListener("ready", () => this.init()); + } + + init():void { + //launch the poly into space + this.position.copy(this.pos); + this.setLinearVelocity(Poly.generateDirection().normalize()); + } + + static generateDirection():Vector3 { + let verts = []; + for (let i = 0; i < 3; i++) { + verts.push(Math.random()); + } + return new Vector3().fromArray(verts); + } + + static generateGeometry():THREE.Geometry { + //generate two random verts, construct a triangle + let geom = new THREE.Geometry(); + geom.vertices.push(new Vector3()); + geom.vertices.push(Poly.generateDirection()); + geom.vertices.push(Poly.generateDirection()); + geom.faces.push(new THREE.Face3(0, 1, 2)); + return geom; + } + +} + /** * */ class Morph extends Physijs.SphereMesh { + radius:number; static levels:number[] = [4, 6, 12, 20]; constructor(public level:number, material?:THREE.Material, mass?:number) { super(Morph.generateGeometry(level), material, mass); + this.radius = this.geometry.boundingSphere.radius; + this.addEventListener("ready", () => this.init()); + } + + init():void { } static generateGeometry(level:number):THREE.Geometry { @@ -225,9 +270,9 @@ class Morph extends Physijs.SphereMesh { case 6: return new THREE.BoxGeometry(1, 1, 1, 1, 1, 1); case 12: - return new THREE.DodecahedronGeometry(1, 0); - case 20: return new THREE.IcosahedronGeometry(1, 0); + case 20: + return new THREE.DodecahedronGeometry(1, 0); default: return new THREE.TetrahedronGeometry(); } @@ -235,6 +280,8 @@ class Morph extends Physijs.SphereMesh { private updateGeometry():void { this.geometry = Morph.generateGeometry(this.level); + this.geometry.computeBoundingSphere(); + this.radius = this.geometry.boundingSphere.radius; } shrink():void { @@ -251,6 +298,11 @@ class Morph extends Physijs.SphereMesh { } } + collides(other:Morph):boolean { + return this.position.clone().sub(other.position).length() < this.radius + other.radius; + } + + } /** @@ -271,7 +323,11 @@ class Projectile extends Morph { this.position.copy(pos.clone().add(dir.clone().setLength(2))); } - shoot():void { + init():void { + this.launch(); + }; + + launch():void { this.setLinearVelocity(this.dir); } @@ -280,16 +336,29 @@ class Projectile extends Morph { } } +class LiveMorph extends Morph { + life:number = 100; + + damage(by:number):void { + if (this.isAlive()) + this.life -= by; + } + + isAlive():boolean { + return this.life > 0; + } +} + /** * */ -class Enemy extends Morph { - speed:number = 10; +class Enemy extends LiveMorph { + speed:number = 20; constructor() { super(0, Physijs.createMaterial( new THREE.MeshBasicMaterial({ - color: 0xb02000 + color: 0xa01b00 }), .8, .6 @@ -301,23 +370,34 @@ class Enemy extends Morph { this.setLinearVelocity(toPlayer.setLength(this.speed)); } + die():Poly[] { + let polys = []; + let amount = Math.floor(Math.random() * 10); + for (let i = 0; i < amount; i++) { + let poly = new Poly(this.position); + polys.push(poly); + } + + return polys; + } + } -class Player extends Morph { - minus:number; - plus:number; - life:number; +class Player extends LiveMorph { + minus:number = 0; + plus:number = 0; + speed:number = 25; + forward:Vector3 = new Vector3(0, 0, -1); upward:Vector3 = new Vector3(0, 1, 0); - camera:Vector3 = new Vector3(0, 10, 10); + camera:Vector3 = new Vector3(0, 7, 10); heading:number = 0; pitch:number = 0; - speed:number = 25; projectiles:Projectile[] = []; + listener:THREE.AudioListener; constructor() { - super(1, Physijs.createMaterial( new THREE.MeshBasicMaterial({ color: 0x00a0b0 @@ -326,6 +406,13 @@ class Player extends Morph { 0.1 ), 0.5); + this.listener = new THREE.AudioListener(); + this.add(this.listener); + } + + init():void { + this.castShadow = true; + this.setDamping(0.05, 0.05); } jump():void { @@ -347,16 +434,21 @@ class Player extends Morph { } getRight():Vector3 { - return this.getDirection().cross(this.upward).normalize(); + return this.getForward().cross(this.upward).normalize(); } getDirection():Vector3 { + return this.getForward().applyAxisAngle(this.getRight(), this.pitch); + } + + getForward():Vector3 { return this.forward.clone().applyAxisAngle(this.upward, this.heading); } getCamera():Vector3 { return this.camera.clone().applyAxisAngle(this.upward, this.heading).applyAxisAngle(this.getRight(), this.pitch); } + } class World extends Physijs.Scene { @@ -367,16 +459,14 @@ class World extends Physijs.Scene { super(); this.setGravity(new THREE.Vector3(0, -40, 0)); + player.position.set(0, player.radius, 0); this.add(player); - player.position.set(0, 2, 0); - player.castShadow = true; - player.setDamping(0.05, 0.05); for (let i = 0; i < 10; i++) { let enemy = new Enemy(); let x = Math.floor(Math.random() * 20 + 3); let z = Math.floor(Math.random() * 20 + 3); - enemy.position.set(x, 2, z); + enemy.position.set(x, enemy.radius, z); this.add(enemy); this.mobs.push(enemy); } @@ -409,30 +499,55 @@ class World extends Physijs.Scene { } tick(delta:number):void { + //push projectiles queued from player into the world. while (this.player.projectiles.length > 0) { let projectile = this.player.projectiles.pop(); this.projectiles.push(projectile); this.add(projectile); - projectile.shoot(); } //enemy movement this.mobs.forEach((mob) => { mob.approach(this.player); + if (mob.collides(this.player)) { + //collide? + this.player.damage((mob.level + 1) * 3); + } }); - //tick projectiles and remove them if time out - //todo fix projectile removal, now ammojs spams obj s undefined - /* - this.projectiles.filter((projectile) => { + + //tick projectiles and remove them if time out/on hit + this.projectiles = this.projectiles.filter((projectile) => { projectile.tick(delta); let keep = projectile.time < 10 * 1000; + let collided:boolean = false; if (!keep) { this.remove(projectile); + } else { + for (let mob of this.mobs) { + if (mob.collides(projectile)) { + collided = true; + if (mob.level == projectile.level) { + mob.damage((projectile.level + 1) * 10); + } + break; + } + } } - return keep; + return keep && !collided; + }); + + this.mobs = this.mobs.filter((mob) => { + let alive = mob.isAlive(); + if (!alive) { + let polys = mob.die(); + polys.forEach((poly) => { + this.add(poly); + }); + this.remove(mob); + } + return alive; }); - */ //physijs this.simulate(delta, 1); @@ -525,7 +640,7 @@ class Game { this.camera.lookAt(this.player.position); //player movement - let forward = this.player.getDirection(); + let forward = this.player.getForward(); forward.setLength(this.player.speed); let right = forward.clone().cross(this.player.upward); right.setLength(this.player.speed); @@ -559,7 +674,17 @@ class Game { this.player.jump(); } + //debug shoot + if (this.keyboard.down("C")){ + this.player.click(THREE.MOUSE.LEFT); + } + this.world.tick(delta); + + //die! + if (!this.player.isAlive()) { + this.stop(); + } } run(timestamp?):void { @@ -611,14 +736,22 @@ class Game { this.keepRunning = false; } - stop() { + stop(result:boolean = false) { this.pause(); this.state = GameState.STOPPED; this.mouse.unregister(); this.keyboard.unregister(); window.removeEventListener("resize", this.onWindowResize, false); - //todo + + let blocker = document.getElementById("block"); + blocker.style.display = '-webkit-box'; + blocker.style.display = '-moz-box'; + blocker.style.display = 'box'; + let instructions = document.getElementById("instructions"); + instructions.style.fontSize = "40px"; + instructions.innerHTML = result ? "You won!" : "You lost!"; + instructions.style.display = ""; } } diff --git a/index.css b/index.css index 73d8764..3ad9a5a 100644 --- a/index.css +++ b/index.css @@ -48,3 +48,7 @@ body { cursor: pointer; } + +#name { + font-size: 40px; +} \ No newline at end of file diff --git a/index.html b/index.html index 6d9e800..48375fb 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,10 @@
>2]|0;h=c[e+248>>2]|0;c[f+552+8>>2]=0;c[f+552+12>>2]=1065353216;c[f+552+16>>2]=1065353216;c[f+552+20>>2]=1065353216;g[f+552+24>>2]=0.0;c[f+552>>2]=6672;c[f+552+4>>2]=8;c[f+552+28>>2]=h;c[f+552+44>>2]=h;c[f+376>>2]=3708;g[f+376+164>>2]=999999984306749440.0;c[f+376+168>>2]=0;g[f+376+172>>2]=0.0;g[f+16+308>>2]=9.999999747378752e-05;a[f+16+332>>0]=0;c[f>>2]=9140;c[f+4>>2]=f+16;c[f+8>>2]=b;c[f+12>>2]=f+552;if(Ed(f,d+4|0,d+68|0,e+4|0,e+68|0,f+376|0)|0){j=+g[f+376+164>>2];if(+g[d+244>>2]>j)g[d+244>>2]=j;if(+g[e+244>>2]>j)g[e+244>>2]=j;if(j<1.0)k=j;else k=1.0}else k=1.0;b=c[e+192>>2]|0;h=c[d+248>>2]|0;c[f+552+8>>2]=0;c[f+552+12>>2]=1065353216;c[f+552+16>>2]=1065353216;c[f+552+20>>2]=1065353216;g[f+552+24>>2]=0.0;c[f+552>>2]=6672;c[f+552+4>>2]=8;c[f+552+28>>2]=h;c[f+552+44>>2]=h;c[f+376>>2]=3708;g[f+376+164>>2]=999999984306749440.0;c[f+376+168>>2]=0;g[f+376+172>>2]=0.0;g[f+16+308>>2]=9.999999747378752e-05;a[f+16+332>>0]=0;c[f>>2]=9140;c[f+4>>2]=f+16;c[f+8>>2]=f+552;c[f+12>>2]=b;if(Ed(f,d+4|0,d+68|0,e+4|0,e+68|0,f+376|0)|0){j=+g[f+376+164>>2];if(+g[d+244>>2]>j)g[d+244>>2]=j;if(+g[e+244>>2]>j)g[e+244>>2]=j;if(!(k>j))j=k}else j=k;p=j;i=f;return +p}function Vf(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0;e=i;i=i+128|0;G=c[(c[a+8>>2]|0)+24>>2]|0;h=c[G+(d*80|0)+64>>2]|0;f=c[a+12>>2]|0;x=+g[G+(d*80|0)>>2];D=+g[f>>2];w=+g[G+(d*80|0)+16>>2];C=+g[f+4>>2];v=+g[G+(d*80|0)+32>>2];B=+g[f+8>>2];u=+g[G+(d*80|0)+4>>2];t=+g[G+(d*80|0)+20>>2];s=+g[G+(d*80|0)+36>>2];r=+g[G+(d*80|0)+8>>2];p=+g[G+(d*80|0)+24>>2];n=+g[G+(d*80|0)+40>>2];A=+g[f+16>>2];z=+g[f+20>>2];y=+g[f+24>>2];q=+g[f+32>>2];o=+g[f+36>>2];m=+g[f+40>>2];F=+g[G+(d*80|0)+48>>2];E=+g[G+(d*80|0)+52>>2];j=+g[G+(d*80|0)+56>>2];l=+g[f+48>>2]+(D*F+C*E+B*j);k=A*F+z*E+y*j+ +g[f+52>>2];j=q*F+o*E+m*j+ +g[f+56>>2];g[e+56>>2]=x*D+w*C+v*B;g[e+56+4>>2]=D*u+C*t+B*s;g[e+56+8>>2]=D*r+C*p+B*n;g[e+56+12>>2]=0.0;g[e+56+16>>2]=x*A+w*z+v*y;g[e+56+20>>2]=u*A+t*z+s*y;g[e+56+24>>2]=r*A+p*z+n*y;g[e+56+28>>2]=0.0;g[e+56+32>>2]=x*q+w*o+v*m;g[e+56+36>>2]=u*q+t*o+s*m;g[e+56+40>>2]=r*q+p*o+n*m;g[e+56+44>>2]=0.0;g[e+56+48>>2]=l;g[e+56+52>>2]=k;g[e+56+56>>2]=j;g[e+56+60>>2]=0.0;f=c[a+4>>2]|0;c[e+32>>2]=0;c[e+32+4>>2]=h;c[e+32+8>>2]=f;c[e+32+12>>2]=e+56;c[e+32+16>>2]=-1;c[e+32+20>>2]=d;f=c[a+24>>2]|0;g[e+4>>2]=1.0;c[e+8>>2]=0;b[e+12>>1]=1;b[e+14>>1]=-1;c[e+16>>2]=0;c[e>>2]=5840;c[e+20>>2]=f;c[e+24>>2]=d;c[e+4>>2]=c[f+4>>2];c[e+16>>2]=c[f+16>>2];bd(c[a+16>>2]|0,c[a+20>>2]|0,e+32|0,e);i=e;return}function Wf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0;j=i;i=i+96|0;f=+Sb[c[(c[a>>2]|0)+48>>2]&15](a);h=0;do{q=j+80+(h<<2)|0;c[j+80>>2]=0;c[j+80+4>>2]=0;c[j+80+8>>2]=0;c[j+80+12>>2]=0;g[q>>2]=1.0;k=c[(c[a>>2]|0)+64>>2]|0;l=+g[j+80>>2];m=+g[j+80+4>>2];n=+g[j+80+8>>2];o=l*+g[b+4>>2]+m*+g[b+20>>2]+n*+g[b+36>>2];p=l*+g[b+8>>2]+m*+g[b+24>>2]+n*+g[b+40>>2];g[j+32>>2]=+g[b>>2]*l+ +g[b+16>>2]*m+ +g[b+32>>2]*n;g[j+32+4>>2]=o;g[j+32+8>>2]=p;g[j+32+12>>2]=0.0;ic[k&127](j+64|0,a,j+32|0);p=+g[j+64>>2];o=+g[j+64+4>>2];n=+g[j+64+8>>2];m=p*+g[b+16>>2]+o*+g[b+20>>2]+n*+g[b+24>>2]+ +g[b+52>>2];l=p*+g[b+32>>2]+o*+g[b+36>>2]+n*+g[b+40>>2]+ +g[b+56>>2];g[j+48>>2]=p*+g[b>>2]+o*+g[b+4>>2]+n*+g[b+8>>2]+ +g[b+48>>2];g[j+48+4>>2]=m;g[j+48+8>>2]=l;g[j+48+12>>2]=0.0;k=j+48+(h<<2)|0;g[e+(h<<2)>>2]=f+ +g[k>>2];g[q>>2]=-1.0;q=c[(c[a>>2]|0)+64>>2]|0;l=+g[j+80>>2];m=+g[j+80+4>>2];n=+g[j+80+8>>2];o=l*+g[b+4>>2]+m*+g[b+20>>2]+n*+g[b+36>>2];p=l*+g[b+8>>2]+m*+g[b+24>>2]+n*+g[b+40>>2];g[j>>2]=+g[b>>2]*l+ +g[b+16>>2]*m+ +g[b+32>>2]*n;g[j+4>>2]=o;g[j+8>>2]=p;g[j+12>>2]=0.0;ic[q&127](j+16|0,a,j);p=+g[j+16>>2];o=+g[j+16+4>>2];n=+g[j+16+8>>2];m=p*+g[b+16>>2]+o*+g[b+20>>2]+n*+g[b+24>>2]+ +g[b+52>>2];l=p*+g[b+32>>2]+o*+g[b+36>>2]+n*+g[b+40>>2]+ +g[b+56>>2];g[j+48>>2]=p*+g[b>>2]+o*+g[b+4>>2]+n*+g[b+8>>2]+ +g[b+48>>2];g[j+48+4>>2]=m;g[j+48+8>>2]=l;g[j+48+12>>2]=0.0;g[d+(h<<2)>>2]=+g[k>>2]-f;h=h+1|0}while((h|0)!=3);i=j;return}function Xf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+160|0;j=c[b+12>>2]|0;if(!j){i=l;return}m=(a[b+16>>0]|0)!=0;n=m?e:d;e=m?d:e;p=c[n+4>>2]|0;o=c[e+4>>2]|0;c[h+4>>2]=j;d=c[j+752>>2]|0;c[l+136>>2]=9304;c[l+136+4>>2]=p;c[l+136+8>>2]=o;c[l+136+12>>2]=d;g[l+128>>2]=999999984306749440.0;d=c[n+12>>2]|0;c[l>>2]=c[d>>2];c[l+4>>2]=c[d+4>>2];c[l+8>>2]=c[d+8>>2];c[l+12>>2]=c[d+12>>2];c[l+16>>2]=c[d+16>>2];c[l+16+4>>2]=c[d+16+4>>2];c[l+16+8>>2]=c[d+16+8>>2];c[l+16+12>>2]=c[d+16+12>>2];c[l+32>>2]=c[d+32>>2];c[l+32+4>>2]=c[d+32+4>>2];c[l+32+8>>2]=c[d+32+8>>2];c[l+32+12>>2]=c[d+32+12>>2];c[l+48>>2]=c[d+48>>2];c[l+48+4>>2]=c[d+48+4>>2];c[l+48+8>>2]=c[d+48+8>>2];c[l+48+12>>2]=c[d+48+12>>2];e=c[e+12>>2]|0;c[l+64>>2]=c[e>>2];c[l+64+4>>2]=c[e+4>>2];c[l+64+8>>2]=c[e+8>>2];c[l+64+12>>2]=c[e+12>>2];c[l+80>>2]=c[e+16>>2];c[l+80+4>>2]=c[e+16+4>>2];c[l+80+8>>2]=c[e+16+8>>2];c[l+80+12>>2]=c[e+16+12>>2];c[l+96>>2]=c[e+32>>2];c[l+96+4>>2]=c[e+32+4>>2];c[l+96+8>>2]=c[e+32+8>>2];c[l+96+12>>2]=c[e+32+12>>2];c[l+112>>2]=c[e+48>>2];c[l+112+4>>2]=c[e+48+4>>2];c[l+112+8>>2]=c[e+48+8>>2];c[l+112+12>>2]=c[e+48+12>>2];$d(l+136|0,l,h,c[f+20>>2]|0,m);do if(a[b+8>>0]|0?(k=c[h+4>>2]|0,c[k+748>>2]|0):0){d=c[k+740>>2]|0;e=c[(c[h+8>>2]|0)+8>>2]|0;j=c[(c[h+12>>2]|0)+8>>2]|0;if((d|0)==(e|0)){ef(k,d+4|0,j+4|0);break}else{ef(k,j+4|0,e+4|0);break}}while(0);i=l;return}function Yf(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;c[d+4>>2]=1065353216;c[d+8>>2]=1065353216;c[d+12>>2]=1065353216;g[d+16>>2]=0.0;a[d+36>>0]=1;c[d+32>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;c[d+48>>2]=0;c[d>>2]=8452;a[d+100>>0]=1;c[d+96>>2]=0;c[d+88>>2]=0;c[d+92>>2]=0;a[d+120>>0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140>>0]=1;c[d+136>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;a[d+160>>0]=1;c[d+156>>2]=0;c[d+148>>2]=0;c[d+152>>2]=0;a[d+164>>0]=e&1;a[d+165>>0]=f&1;g[d+168>>2]=0.0;c[6435]=(c[6435]|0)+1;e=yc(51)|0;if(!e)h=0;else{c[(e+4+15&-16)+-4>>2]=e;h=e+4+15&-16}e=c[d+24>>2]|0;if((e|0)>0){f=0;do{i=h+(f<<5)|0;j=(c[d+32>>2]|0)+(f<<5)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];c[i+20>>2]=c[j+20>>2];c[i+24>>2]=c[j+24>>2];c[i+28>>2]=c[j+28>>2];f=f+1|0}while((f|0)!=(e|0))}e=c[d+32>>2]|0;if(e|0){if(a[d+36>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0)}c[d+32>>2]=0}a[d+36>>0]=1;c[d+32>>2]=h;c[d+28>>2]=1;e=c[d+24>>2]|0;c[h+(e<<5)>>2]=0;c[h+(e<<5)+4>>2]=0;c[h+(e<<5)+8>>2]=12;c[h+(e<<5)+12>>2]=0;c[h+(e<<5)+16>>2]=0;c[h+(e<<5)+20>>2]=16;c[h+(e<<5)+24>>2]=2;c[h+(e<<5)+28>>2]=0;c[d+24>>2]=(c[d+24>>2]|0)+1;e=b[d+164>>1]|0;if(!((e&255)<<24>>24)){f=c[d+32>>2]|0;c[f>>2]=(c[d+148>>2]|0)/3|0;c[f+4>>2]=0;c[f+24>>2]=3;c[f+8>>2]=6}else{f=c[d+32>>2]|0;c[f>>2]=(c[d+128>>2]|0)/3|0;c[f+4>>2]=0;c[f+24>>2]=2;c[f+8>>2]=12}if((e&65535)<256){i=12;d=(c[d+108>>2]|0)/3|0;j=f+12|0;c[j>>2]=d;j=f+16|0;c[j>>2]=0;j=f+20|0;c[j>>2]=i;return}else{i=16;d=c[d+88>>2]|0;j=f+12|0;c[j>>2]=d;j=f+16|0;c[j>>2]=0;j=f+20|0;c[j>>2]=i;return}}function Zf(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;q=i;i=i+48|0;if((f|0)==(d|0)|((d|0)==(e|0)|(e|0)==(f|0))){i=q;return}l=q;m=l+36|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));if(!h)p=c[c[b+880>>2]>>2]|0;else p=h;h=c[b+752>>2]|0;if((h|0)==(c[b+756>>2]|0)?(o=h|0?h<<1:1,(h|0)<(o|0)):0){if(!o)n=0;else{c[6435]=(c[6435]|0)+1;h=yc((o*44|3)+16|0)|0;if(!h)h=0;else{c[(h+4+15&-16)+-4>>2]=h;h=h+4+15&-16}n=h;h=c[b+752>>2]|0}if((h|0)>0){j=0;do{l=n+(j*44|0)|0;k=(c[b+760>>2]|0)+(j*44|0)|0;m=l+44|0;do{c[l>>2]=c[k>>2];l=l+4|0;k=k+4|0}while((l|0)<(m|0));j=j+1|0}while((j|0)!=(h|0))}h=c[b+760>>2]|0;if(h|0){if(a[b+764>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[h+-4>>2]|0)}c[b+760>>2]=0}a[b+764>>0]=1;c[b+760>>2]=n;c[b+756>>2]=o;h=c[b+752>>2]|0}l=c[b+760>>2]|0;c[l+(h*44|0)>>2]=0;c[l+(h*44|0)+4>>2]=p;l=l+(h*44|0)+8|0;k=q;m=l+36|0;do{c[l>>2]=c[k>>2];l=l+4|0;k=k+4|0}while((l|0)<(m|0));p=c[b+752>>2]|0;c[b+752>>2]=p+1;o=c[b+760>>2]|0;l=c[b+720>>2]|0;c[o+(p*44|0)+8>>2]=l+(d*104|0);m=c[b+720>>2]|0;c[o+(p*44|0)+12>>2]=m+(e*104|0);n=c[b+720>>2]|0;c[o+(p*44|0)+16>>2]=n+(f*104|0);t=+g[l+(d*104|0)+8>>2];v=+g[l+(d*104|0)+12>>2];r=+g[l+(d*104|0)+16>>2];s=+g[m+(e*104|0)+8>>2]-t;w=+g[m+(e*104|0)+12>>2]-v;u=+g[m+(e*104|0)+16>>2]-r;t=+g[n+(f*104|0)+8>>2]-t;v=+g[n+(f*104|0)+12>>2]-v;r=+g[n+(f*104|0)+16>>2]-r;g[o+(p*44|0)+36>>2]=+O(+((s*v-w*t)*(s*v-w*t)+((w*r-u*v)*(w*r-u*v)+(u*t-s*r)*(u*t-s*r))));a[b+924>>0]=1;i=q;return}function _f(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0;m=i;i=i+16|0;li(12187);e=c[b+232>>2]|0;if((e|0)>0){l=(a[26260]|0)==0;k=0;do{j=c[(c[b+240>>2]|0)+(k<<2)>>2]|0;a:do if(j){f=c[j+216>>2]|0;b:do switch(f|0){case 4:case 2:{if((f|0)==4)break a;break}default:{q=+g[j+312>>2];p=+g[j+316>>2];o=+g[j+320>>2];n=+g[j+472>>2];if(q*q+p*p+o*o >2];n=t >2]=p;t=+g[u+20>>2];h=+g[b+20>>2];h=t>h?t:h;g[w>>2]=h;t=+g[u+8>>2];n=+g[b+8>>2];n=t 1.1920928955078125e-07){j=+O(+(n*n+o*o+m*m));h=h-j;l=n*(1.0/j);k=m*(1.0/j);j=o*(1.0/j)}h=-h;if(f){x=+g[b+64>>2];y=+g[b+68>>2];A=+g[b+72>>2];B=x*l+y*j+A*k;o=+g[b+80>>2];p=+g[b+84>>2];t=+g[b+88>>2];C=l*o+j*p+k*t;u=+g[b+96>>2];v=+g[b+100>>2];w=+g[b+104>>2];D=l*u+j*v+k*w;g[E+48>>2]=-B;g[E+48+4>>2]=-C;g[E+48+8>>2]=-D;g[E+48+12>>2]=0.0;C=s*o+q*p+r*t+ +g[b+116>>2]+C*h;D=s*u+q*v+r*w+ +g[b+120>>2]+D*h;g[E+32>>2]=s*x+q*y+r*A+ +g[b+112>>2]+B*h;g[E+32+4>>2]=C;g[E+32+8>>2]=D;g[E+32+12>>2]=0.0;hc[c[(c[d>>2]|0)+16>>2]&15](d,E+48|0,E+32|0,h);i=E;return}else{F=c[(c[d>>2]|0)+16>>2]|0;y=+g[b+64>>2];A=+g[b+68>>2];B=+g[b+72>>2];u=+g[b+80>>2];v=+g[b+84>>2];C=+g[b+88>>2];w=+g[b+96>>2];x=+g[b+100>>2];D=+g[b+104>>2];g[E+16>>2]=y*l+A*j+B*k;g[E+16+4>>2]=l*u+j*v+k*C;g[E+16+8>>2]=l*w+j*x+k*D;g[E+16+12>>2]=0.0;C=s*u+q*v+r*C+ +g[b+116>>2];D=s*w+q*x+r*D+ +g[b+120>>2];g[E>>2]=s*y+q*A+r*B+ +g[b+112>>2];g[E+4>>2]=C;g[E+8>>2]=D;g[E+12>>2]=0.0;hc[F&15](d,E+16|0,E,h);i=E;return}}function ae(b){b=b|0;var d=0.0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0;r=i;i=i+80|0;if((Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0?(q=Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0,(Eb[c[(c[q>>2]|0)+48>>2]&127](q)|0)&8|0):0)?(e=c[b+24>>2]|0,e=Eb[c[(c[e>>2]|0)+36>>2]&127](e)|0,c[r+64>>2]=1065353216,c[r+64+4>>2]=1065353216,c[r+64+8>>2]=0,g[r+64+12>>2]=0.0,(e|0)>0):0){j=0;do{f=c[b+24>>2]|0;f=Zb[c[(c[f>>2]|0)+40>>2]&31](f,j)|0;h=c[f+748>>2]|0;if((h|0)>0){k=0;do{q=Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0;Bb[c[(c[q>>2]|0)+32>>2]&0](q,f+4+(k*184|0)+32|0,f+4+(k*184|0)+64|0,+g[f+4+(k*184|0)+80>>2],c[f+4+(k*184|0)+148>>2]|0,r+64|0);k=k+1|0}while((k|0)!=(h|0))}j=j+1|0}while((j|0)!=(e|0))}if(!(Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0)){i=r;return}q=Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0;if(!((Eb[c[(c[q>>2]|0)+48>>2]&127](q)|0)&3)){i=r;return}if((c[b+8>>2]|0)<=0){i=r;return}h=r+64+4|0;j=r+64+8|0;k=r+64+12|0;q=0;do{f=c[(c[b+16>>2]|0)+(q<<2)>>2]|0;if(!(c[f+204>>2]&32)){if(Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0?(e=Eb[c[(c[b>>2]|0)+20>>2]&127](b)|0,(Eb[c[(c[e>>2]|0)+48>>2]&127](e)|0)&1|0):0){c[r+64>>2]=1065353216;c[h>>2]=1065353216;c[j>>2]=1065353216;g[k>>2]=0.0;switch(c[f+216>>2]|0){case 1:{c[r+64>>2]=1065353216;c[h>>2]=1065353216;c[j>>2]=1065353216;g[k>>2]=0.0;break}case 2:{c[r+64>>2]=0;c[h>>2]=1065353216;c[j>>2]=0;g[k>>2]=0.0;break}case 3:{c[r+64>>2]=0;c[h>>2]=1065353216;c[j>>2]=1065353216;g[k>>2]=0.0;break}case 4:{c[r+64>>2]=1065353216;c[h>>2]=0;c[j>>2]=0;g[k>>2]=0.0;break}case 5:{c[r+64>>2]=1065353216;c[h>>2]=1065353216;c[j>>2]=0;g[k>>2]=0.0;break}default:{c[r+64>>2]=1065353216;c[h>>2]=0;c[j>>2]=0;g[k>>2]=0.0}}mc[c[(c[b>>2]|0)+28>>2]&127](b,f+4|0,c[f+192>>2]|0,r+64|0)}e=c[b+72>>2]|0;if(e|0?(Eb[c[(c[e>>2]|0)+48>>2]&127](e)|0)&2|0:0){c[r+32>>2]=1065353216;c[r+32+4>>2]=0;c[r+32+8>>2]=0;g[r+32+12>>2]=0.0;e=c[f+192>>2]|0;mc[c[(c[e>>2]|0)+8>>2]&127](e,f+4|0,r+64|0,r+48|0);g[r+64>>2]=+g[r+64>>2]+-.019999999552965164;g[r+64+4>>2]=+g[r+64+4>>2]+-.019999999552965164;g[r+64+8>>2]=+g[r+64+8>>2]+-.019999999552965164;g[r+48>>2]=+g[r+48>>2]+.019999999552965164;g[r+48+4>>2]=+g[r+48+4>>2]+.019999999552965164;g[r+48+8>>2]=+g[r+48+8>>2]+.019999999552965164;do if((a[b+44>>0]|0?(c[f+236>>2]|0)==2:0)?(c[f+204>>2]&3|0)==0:0){e=c[f+192>>2]|0;mc[c[(c[e>>2]|0)+8>>2]&127](e,f+68|0,r+16|0,r);d=+g[r+16>>2]+-.019999999552965164;g[r+16>>2]=d;l=+g[r+16+4>>2]+-.019999999552965164;g[r+16+4>>2]=l;m=+g[r+16+8>>2]+-.019999999552965164;g[r+16+8>>2]=m;n=+g[r>>2]+.019999999552965164;g[r>>2]=n;o=+g[r+4>>2]+.019999999552965164;g[r+4>>2]=o;p=+g[r+8>>2]+.019999999552965164;g[r+8>>2]=p;if(d<+g[r+64>>2])g[r+64>>2]=d;if(l<+g[r+64+4>>2])g[r+64+4>>2]=l;if(m<+g[r+64+8>>2])g[r+64+8>>2]=m;d=+g[r+16+12>>2];if(d<+g[r+64+12>>2])g[r+64+12>>2]=d;if(+g[r+48>>2] >2]=p;d=+g[r+12>>2];if(!(+g[r+48+12>>2] >2]=o,+g[k>>2]) .004999999888241291){g[q+328>>2]=o-o*(1.0/k)*.004999999888241291;g[q+332>>2]=l-l*(1.0/k)*.004999999888241291;g[q+336>>2]=m-m*(1.0/k)*.004999999888241291;break}else{c[q+328>>2]=0;c[q+328+4>>2]=0;c[q+328+8>>2]=0;c[q+328+12>>2]=0;break}}while(0);Zg(q+4|0,j,h,f,q+328|0,d,q+68|0);e=c[b+232>>2]|0}r=r+1|0}while((r|0)<(e|0))}e=c[2357]|0;b=(c[e+16>>2]|0)+-1|0;c[e+16>>2]=b;if(b|0){i=s;return}do if(c[e+4>>2]|0){tb(s|0,0)|0;b=c[6434]|0;g[e+8>>2]=+g[e+8>>2]+ +(((c[s+4>>2]|0)-(c[b+4>>2]|0)+(((c[s>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[e+12>>2]|0)|0)>>>0)/1.0e3;if(!(c[e+16>>2]|0)){e=c[2357]|0;break}else{i=s;return}}while(0);c[2357]=c[e+20>>2];i=s;return}function jf(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=c[a+108>>2]|0;if(g|0)ic[c[(c[g>>2]|0)+12>>2]&127](g,c[d+60>>2]|0,f);q=c[d+12>>2]|0;p=c[a+60>>2]|0;o=c[a+92>>2]|0;if(!(Eb[c[(c[o>>2]|0)+56>>2]&127](o)|0)){o=c[a+92>>2]|0;ic[c[(c[o>>2]|0)+16>>2]&127](o,p+((q&65535)<<6)|0,f)}m=e[a+56>>1]|0;g=c[a+60>>2]|0;b[g+54>>1]=(e[g+54>>1]|0)+65534;b[g+56>>1]=(e[g+56>>1]|0)+65534;b[g+58>>1]=(e[g+58>>1]|0)+65534;g=b[a+6>>1]|0;o=0;do{l=a+68+(o<<2)|0;n=c[l>>2]|0;f=e[p+((q&65535)<<6)+54+(o<<1)>>1]|0;b[n+(f<<2)>>1]=g;d=b[n+(f<<2)+6>>1]|0;if(!(d<<16>>16))f=n;else{k=(c[a+60>>2]|0)+((e[n+(f<<2)+2>>1]|0)<<6)+54+(o<<1)|0;i=n+(f<<2)|0;while(1){j=i;i=i+4|0;h=b[i>>1]|0;if((g&65535)<(h&65535))break;f=c[a+60>>2]|0;g=d&65535;if(!(h&1)){h=f+(g<<6)+48+(o<<1)|0;b[h>>1]=(b[h>>1]|0)+-1<<16>>16}else{h=f+(g<<6)+54+(o<<1)|0;b[h>>1]=(b[h>>1]|0)+-1<<16>>16}b[k>>1]=(b[k>>1]|0)+1<<16>>16;g=e[j>>1]|e[j+2>>1]<<16;d=e[i>>1]|e[i+2>>1]<<16;b[j>>1]=d;b[j+2>>1]=d>>>16;b[i>>1]=g;b[i+2>>1]=g>>>16;d=b[j+10>>1]|0;if(!(d<<16>>16))break;else g=g&65535}g=b[a+6>>1]|0;f=c[l>>2]|0}d=e[p+((q&65535)<<6)+48+(o<<1)>>1]|0;b[n+(d<<2)>>1]=g;i=f+(d<<2)|0;h=b[i+6>>1]|0;if(h<<16>>16){k=(c[a+60>>2]|0)+((e[f+(d<<2)+2>>1]|0)<<6)+48+(o<<1)|0;g=b[i>>1]|0;while(1){j=i;i=i+4|0;f=b[i>>1]|0;if((g&65535)<(f&65535))break;d=c[a+60>>2]|0;g=h&65535;if(!(f&1)){l=d+(g<<6)+48+(o<<1)|0;b[l>>1]=(b[l>>1]|0)+-1<<16>>16}else{l=d+(g<<6)+54+(o<<1)|0;b[l>>1]=(b[l>>1]|0)+-1<<16>>16}b[k>>1]=(b[k>>1]|0)+1<<16>>16;g=e[j>>1]|e[j+2>>1]<<16;h=e[i>>1]|e[i+2>>1]<<16;b[j>>1]=h;b[j+2>>1]=h>>>16;b[i>>1]=g;b[i+2>>1]=g>>>16;h=b[j+10>>1]|0;if(!(h<<16>>16))break;else g=g&65535}g=b[a+6>>1]|0}b[n+((m<<1)+-1<<2)+2>>1]=0;b[n+((m<<1)+-1<<2)>>1]=g;o=o+1|0}while((o|0)!=3);b[(c[a+60>>2]|0)+((q&65535)<<6)+48>>1]=b[a+64>>1]|0;b[a+64>>1]=q;b[a+56>>1]=(b[a+56>>1]|0)+-1<<16>>16;return}function kf(b){b=b|0;var d=0,e=0;c[b>>2]=5224;if(a[b+20>>0]|0){d=c[b+16>>2]|0;e=c[d+16>>2]|0;if(e){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0);d=c[b+16>>2]|0}if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}}if(a[b+12>>0]|0){d=c[b+8>>2]|0;e=c[d+16>>2]|0;if(e){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0);d=c[b+8>>2]|0}if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}}d=c[b+32>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+32>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+36>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+36>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+40>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+40>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+44>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+44>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+48>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+48>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+52>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+52>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+56>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+56>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+60>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+60>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+76>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+76>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+80>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+80>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+72>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+72>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+88>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+88>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+84>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+84>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+24>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}d=c[b+28>>2]|0;Ab[c[c[d>>2]>>2]&255](d);d=c[b+28>>2]|0;if(!d)return;c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0);return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0;if(!(c[a>>2]|0)){c[a>>2]=d;c[d+32>>2]=0;return}e=c[b+40>>2]|0;if(!e)o=b;else{k=+g[d>>2]+ +g[d+16>>2];i=+g[d+4>>2]+ +g[d+20>>2];j=+g[d+8>>2]+ +g[d+24>>2];do{p=c[b+36>>2]|0;n=+N(+(k-(+g[p>>2]+ +g[p+16>>2])))+ +N(+(i-(+g[p+4>>2]+ +g[p+20>>2])))+ +N(+(j-(+g[p+8>>2]+ +g[p+24>>2])));b=c[b+36+((!(n<+N(+(k-(+g[e>>2]+ +g[e+16>>2])))+ +N(+(i-(+g[e+4>>2]+ +g[e+20>>2])))+ +N(+(j-(+g[e+8>>2]+ +g[e+24>>2]))))&1)<<2)>>2]|0;e=c[b+40>>2]|0}while((e|0)!=0);o=b}p=o+32|0;e=c[p>>2]|0;b=c[a+4>>2]|0;if(!b){c[6435]=(c[6435]|0)+1;b=yc(63)|0;if(!b)b=0;else{c[(b+4+15&-16)+-4>>2]=b;b=b+4+15&-16}f=b;h=f+44|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0))}else c[a+4>>2]=0;c[b+32>>2]=e;c[b+36>>2]=0;f=b+40|0;c[f>>2]=0;q=+g[d>>2];n=+g[o>>2];n=q >2]|0)<(r|0))break;else break a}while(0);f=f+1|0}b:while(1){j=+g[s+(h*24|0)+16>>2];do if(q!=j){if(!(q >2];n=N >2]=n;if(k >2]=p;else p=v;if(x >>0|(o|0)==(p|0)&k>>>0<0)&1|0,0)|0;q=C;t=c[h>>2]|0;G=c[h+4>>2]|0;s=vr(t|0,0,m|0,0)|0;r=C;E=vr(G|0,0,m|0,0)|0;H=C;t=vr(t|0,0,l|0,0)|0;u=C;G=vr(G|0,0,l|0,0)|0;F=C;t=Kt(E|0,0,t|0,0)|0;E=C;F=Kt(H|0,0,G|0,F|0)|0;u=Kt(F|0,C|0,u|0,0)|0;E=Kt(u|0,C|0,E|0,0)|0;u=C;r=Kt(0,t|0,s|0,r|0)|0;s=C;t=Kt(E|0,u|0,(s>>>0>2]=+g[j+220>>2]+d;break b}g[j+220>>2]=0.0;if((f&-2|0)!=4){c[j+216>>2]=0;f=0}}}while(0);h=f&-2;do if(l){if((h|0)!=2?!(+g[j+220>>2]>2.0):0)break;if(c[j+204>>2]&3|0){if((h|0)==4)break a;c[j+216>>2]=2;break a}if((f|0)==1){if((h|0)==4)break a;c[j+216>>2]=3;break a}else{if((f|0)!=2)break a;e=(c[j+260>>2]|0)+2|0;c[j+328>>2]=0;c[j+328+4>>2]=0;c[j+328+8>>2]=0;c[j+328+12>>2]=0;c[j+260>>2]=e;c[j+312>>2]=0;c[j+312+4>>2]=0;c[j+312+8>>2]=0;c[j+312+12>>2]=0;e=c[b+232>>2]|0;break a}}while(0);if((h|0)!=4)c[j+216>>2]=1}while(0);k=k+1|0}while((k|0)<(e|0))}e=c[2357]|0;b=(c[e+16>>2]|0)+-1|0;c[e+16>>2]=b;if(b|0){i=m;return}do if(c[e+4>>2]|0){tb(m|0,0)|0;b=c[6434]|0;g[e+8>>2]=+g[e+8>>2]+ +(((c[m+4>>2]|0)-(c[b+4>>2]|0)+(((c[m>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[e+12>>2]|0)|0)>>>0)/1.0e3;if(!(c[e+16>>2]|0)){e=c[2357]|0;break}else{i=m;return}}while(0);c[2357]=c[e+20>>2];i=m;return}function $f(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0.0,H=0;H=i;i=i+32|0;k=+g[b+16>>2];f=+g[b>>2];l=+g[b+20>>2];h=+g[b+4>>2];n=+g[b+24>>2];j=+g[b+8>>2];r=+g[b+32>>2];v=+g[b+36>>2];w=+g[b+40>>2];B=(l-h)*(w-j)-(n-j)*(v-h);C=(n-j)*(r-f)-(k-f)*(w-j);D=(k-f)*(v-h)-(l-h)*(r-f);g[H+16>>2]=B;g[H+16+4>>2]=C;g[H+16+8>>2]=D;g[H+16+12>>2]=0.0;o=+g[a+4>>2];s=+g[a+8>>2];x=+g[a+12>>2];E=B*o+C*s+D*x-(f*B+h*C+j*D);p=+g[a+20>>2];t=+g[a+24>>2];y=+g[a+28>>2];if(E*(B*p+C*t+D*y-(f*B+h*C+j*D))>=0.0){i=H;return}F=c[a+36>>2]|0;if(E<=0.0&(F&1|0)!=0){i=H;return}G=E/(E-(B*p+C*t+D*y-(f*B+h*C+j*D)));if(!(G<+g[a+40>>2])){i=H;return}A=(B*B+C*C+D*D)*-9.999999747378752e-05;z=f-(p*G+o*(1.0-G));u=h-(t*G+s*(1.0-G));q=j-(y*G+x*(1.0-G));m=k-(p*G+o*(1.0-G));l=l-(t*G+s*(1.0-G));k=n-(y*G+x*(1.0-G));if(!(D*(z*l-u*m)+(B*(u*k-q*l)+C*(q*m-z*k))>=A)){i=H;return}j=r-(p*G+o*(1.0-G));h=v-(t*G+s*(1.0-G));f=w-(y*G+x*(1.0-G));if(!(D*(m*h-l*j)+(B*(l*f-k*h)+C*(k*j-m*f))>=A)){i=H;return}if(!(D*(u*j-z*h)+(B*(q*h-u*f)+C*(z*f-q*j))>=A)){i=H;return}f=1.0/+O(+(B*B+C*C+D*D));g[H+16>>2]=B*f;g[H+16+4>>2]=C*f;g[H+16+8>>2]=D*f;b=c[(c[a>>2]|0)+12>>2]|0;if(E<=0.0&(F&2|0)==0){g[H>>2]=-(B*f);g[H+4>>2]=-(C*f);g[H+8>>2]=-(D*f);g[H+12>>2]=0.0;g[a+40>>2]=+ec[b&3](a,H,G,d,e);i=H;return}else{g[a+40>>2]=+ec[b&3](a,H+16|0,G,d,e);i=H;return}}function ag(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;l=i;i=i+144|0;j=c[b+12>>2]|0;if(!j){i=l;return}n=c[d+4>>2]|0;m=c[e+4>>2]|0;c[h+4>>2]=j;g[l+12+128>>2]=999999984306749440.0;d=c[d+12>>2]|0;c[l+12>>2]=c[d>>2];c[l+12+4>>2]=c[d+4>>2];c[l+12+8>>2]=c[d+8>>2];c[l+12+12>>2]=c[d+12>>2];c[l+12+16>>2]=c[d+16>>2];c[l+12+16+4>>2]=c[d+16+4>>2];c[l+12+16+8>>2]=c[d+16+8>>2];c[l+12+16+12>>2]=c[d+16+12>>2];c[l+12+32>>2]=c[d+32>>2];c[l+12+32+4>>2]=c[d+32+4>>2];c[l+12+32+8>>2]=c[d+32+8>>2];c[l+12+32+12>>2]=c[d+32+12>>2];c[l+12+48>>2]=c[d+48>>2];c[l+12+48+4>>2]=c[d+48+4>>2];c[l+12+48+8>>2]=c[d+48+8>>2];c[l+12+48+12>>2]=c[d+48+12>>2];e=c[e+12>>2]|0;c[l+12+64>>2]=c[e>>2];c[l+12+64+4>>2]=c[e+4>>2];c[l+12+64+8>>2]=c[e+8>>2];c[l+12+64+12>>2]=c[e+12>>2];c[l+12+80>>2]=c[e+16>>2];c[l+12+80+4>>2]=c[e+16+4>>2];c[l+12+80+8>>2]=c[e+16+8>>2];c[l+12+80+12>>2]=c[e+16+12>>2];c[l+12+96>>2]=c[e+32>>2];c[l+12+96+4>>2]=c[e+32+4>>2];c[l+12+96+8>>2]=c[e+32+8>>2];c[l+12+96+12>>2]=c[e+32+12>>2];c[l+12+112>>2]=c[e+48>>2];c[l+12+112+4>>2]=c[e+48+4>>2];c[l+12+112+8>>2]=c[e+48+8>>2];c[l+12+112+12>>2]=c[e+48+12>>2];c[l>>2]=9284;c[l+4>>2]=n;c[l+8>>2]=m;xc(l,l+12|0,h,c[f+20>>2]|0,0);do if(a[b+8>>0]|0?(k=c[h+4>>2]|0,c[k+748>>2]|0):0){d=c[k+740>>2]|0;e=c[(c[h+8>>2]|0)+8>>2]|0;j=c[(c[h+12>>2]|0)+8>>2]|0;if((d|0)==(e|0)){ef(k,d+4|0,j+4|0);break}else{ef(k,j+4|0,e+4|0);break}}while(0);i=l;return}function bg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0;if(!a)return;n=+g[b>>2];o=+g[b+4>>2];q=+g[b+8>>2];s=+g[b+16>>2];m=+g[b+20>>2];l=+g[b+24>>2];c[6435]=(c[6435]|0)+1;b=yc(275)|0;c[(b+4+15&-16)+-4>>2]=b;c[(b+4+15&-16)>>2]=a;k=1;a=64;b=b+4+15&-16;while(1){e=k+-1|0;i=c[b+(e<<2)>>2]|0;do if(((((+g[i>>2]<=s?+g[i+16>>2]>=n:0)?+g[i+4>>2]<=m:0)?+g[i+20>>2]>=o:0)?+g[i+8>>2]<=l:0)?+g[i+24>>2]>=q:0){if(!(c[i+40>>2]|0)){Cb[c[(c[d>>2]|0)+12>>2]&127](d,i);break}j=c[i+36>>2]|0;do if((e|0)==(a|0)?(p=a|0?a<<1:1,(k|0)<=(p|0)):0){if((p|0)!=0?(c[6435]=(c[6435]|0)+1,r=yc((p<<2|3)+16|0)|0,(r|0)!=0):0){c[(r+4+15&-16)+-4>>2]=r;h=r+4+15&-16}else h=0;if((k|0)<=1){if(!b){a=p;b=h;break}}else{f=0;do{c[h+(f<<2)>>2]=c[b+(f<<2)>>2];f=f+1|0}while((f|0)!=(a|0))}c[6436]=(c[6436]|0)+1;hd(c[b+-4>>2]|0);a=p;b=h}while(0);c[b+(e<<2)>>2]=j;h=c[i+40>>2]|0;do if((k|0)==(a|0)){a=k|0?k<<1:1;if((k|0)<(a|0)){if((a|0)!=0?(c[6435]=(c[6435]|0)+1,t=yc((a<<2|3)+16|0)|0,(t|0)!=0):0){c[(t+4+15&-16)+-4>>2]=t;f=t+4+15&-16}else f=0;if((k|0)<=0){if(!b){b=f;break}}else{e=0;do{c[f+(e<<2)>>2]=c[b+(e<<2)>>2];e=e+1|0}while((e|0)!=(k|0))}c[6436]=(c[6436]|0)+1;hd(c[b+-4>>2]|0);b=f}else a=k}while(0);c[b+(k<<2)>>2]=h;e=k+1|0}while(0);if((e|0)>0)k=e;else break}if(!b)return;c[6436]=(c[6436]|0)+1;hd(c[b+-4>>2]|0);return}function cg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if((c[b+104>>2]|0)>0){l=0;do{h=c[(c[b+4>>2]|0)+684>>2]|0;i=(c[b+112>>2]|0)+(l<<3)+4|0;d=c[i>>2]|0;if((c[h+60>>2]|0)>0){k=0;do{j=(c[h+68>>2]|0)+(k<<2)|0;e=c[j>>2]|0;a:do if(e|0){f=0;do{g=f+280|0;b:do if(!f)while(1){f=e;e=c[e+280>>2]|0;if((c[f+276>>2]|0)!=(d|0))break b;c[j>>2]=e;hd(f);if(!e)break a}else while(1){f=e;e=c[e+280>>2]|0;if((c[f+276>>2]|0)!=(d|0))break b;c[g>>2]=e;hd(f);if(!e)break a}while(0)}while((e|0)!=0)}while(0);k=k+1|0}while((k|0)<(c[h+60>>2]|0));d=c[i>>2]|0}if(d|0)Ab[c[(c[d>>2]|0)+4>>2]&255](d);l=l+1|0}while((l|0)<(c[b+104>>2]|0))}d=c[b+72>>2]|0;if(d|0){if(a[b+76>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+72>>2]=0}a[b+76>>0]=1;c[b+72>>2]=0;c[b+64>>2]=0;c[b+68>>2]=0;d=c[b+92>>2]|0;if(d|0){if(a[b+96>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+92>>2]=0}a[b+96>>0]=1;c[b+92>>2]=0;c[b+84>>2]=0;c[b+88>>2]=0;d=c[b+112>>2]|0;if(d|0){if(a[b+116>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+112>>2]=0}a[b+116>>0]=1;c[b+112>>2]=0;c[b+104>>2]=0;c[b+108>>2]=0;d=c[b+132>>2]|0;if(!d){a[b+136>>0]=1;c[b+132>>2]=0;c[b+124>>2]=0;b=b+128|0;c[b>>2]=0;return}if(a[b+136>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+132>>2]=0;a[b+136>>0]=1;c[b+132>>2]=0;c[b+124>>2]=0;b=b+128|0;c[b>>2]=0;return}function dg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[a+56>>2]|0;if(!e){e=c[a+52>>2]|0;if(!e){c[6435]=(c[6435]|0)+1;e=yc(31)|0;if(!e)e=0;else{c[(e+4+15&-16)+-4>>2]=e;e=e+4+15&-16}f=c[a+60>>2]|0;c[e+4>>2]=f;g=e+8|0;c[g>>2]=0;c[6435]=(c[6435]|0)+1;f=yc((f*24|3)+16|0)|0;if(!f)f=0;else{c[(f+4+15&-16)+-4>>2]=f;f=f+4+15&-16}c[e>>2]=f;c[g>>2]=c[a+48>>2];c[a+48>>2]=e}else c[a+52>>2]=c[e+8>>2];h=c[e+4>>2]|0;e=c[e>>2]|0;if((h|0)>0){f=0;g=e;do{f=f+1|0;i=g;g=g+24|0;c[i>>2]=(f|0)<(h|0)?g:0}while((f|0)!=(h|0));i=e}else i=e}else i=e;c[a+56>>2]=c[i>>2];c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;e=c[a+56>>2]|0;if(!e){e=c[a+52>>2]|0;if(!e){c[6435]=(c[6435]|0)+1;e=yc(31)|0;if(!e)e=0;else{c[(e+4+15&-16)+-4>>2]=e;e=e+4+15&-16}f=c[a+60>>2]|0;c[e+4>>2]=f;g=e+8|0;c[g>>2]=0;c[6435]=(c[6435]|0)+1;f=yc((f*24|3)+16|0)|0;if(!f)f=0;else{c[(f+4+15&-16)+-4>>2]=f;f=f+4+15&-16}c[e>>2]=f;c[g>>2]=c[a+48>>2];c[a+48>>2]=e}else c[a+52>>2]=c[e+8>>2];h=c[e+4>>2]|0;e=c[e>>2]|0;if((h|0)>0){f=0;g=e;do{f=f+1|0;j=g;g=g+24|0;c[j>>2]=(f|0)<(h|0)?g:0}while((f|0)!=(h|0))}}c[a+56>>2]=c[e>>2];c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[i+8>>2]=e;c[e+8>>2]=i;j=c[a+100>>2]|0;c[i+20>>2]=j;c[e+20>>2]=j;c[i+12>>2]=d;c[e+12>>2]=b;c[i+16>>2]=0;c[e+16>>2]=0;e=c[a+116>>2]|0;c[a+116>>2]=e+1;if((e|0)<(c[a+120>>2]|0))return i|0;c[a+120>>2]=e+1;return i|0}function eg(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0;b=c[a+752>>2]|0;if((b|0)>0){d=c[a+760>>2]|0;e=0;do{o=c[d+(e*44|0)+8>>2]|0;f=c[d+(e*44|0)+12>>2]|0;h=c[d+(e*44|0)+16>>2]|0;k=+g[o+8>>2];m=+g[o+12>>2];i=+g[o+16>>2];j=+g[f+8>>2]-k;n=+g[f+12>>2]-m;l=+g[f+16>>2]-i;k=+g[h+8>>2]-k;m=+g[h+12>>2]-m;i=+g[h+16>>2]-i;g[d+(e*44|0)+36>>2]=+O(+((j*m-n*k)*(j*m-n*k)+((n*i-l*m)*(n*i-l*m)+(l*k-j*i)*(l*k-j*i))));e=e+1|0}while((e|0)!=(b|0))}d=c[a+712>>2]|0;if((d|0)>0){c[6435]=(c[6435]|0)+1;b=yc((d<<2|3)+16|0)|0;if(!b)f=0;else{c[(b+4+15&-16)+-4>>2]=b;f=b+4+15&-16}Qn(f|0,0,d<<2|0)|0;d=c[a+712>>2]|0;if((d|0)>0){b=c[a+720>>2]|0;e=0;do{g[b+(e*104|0)+92>>2]=0.0;e=e+1|0}while((e|0)!=(d|0));h=f}else h=f}else h=0;f=c[a+752>>2]|0;if((f|0)>0){b=c[a+760>>2]|0;d=c[a+720>>2]|0;e=0;do{n=+N(+(+g[b+(e*44|0)+36>>2]));o=c[b+(e*44|0)+8>>2]|0;p=h+(((o-d|0)/104|0)<<2)|0;c[p>>2]=(c[p>>2]|0)+1;g[o+92>>2]=n+ +g[o+92>>2];o=c[b+(e*44|0)+12>>2]|0;p=h+(((o-d|0)/104|0)<<2)|0;c[p>>2]=(c[p>>2]|0)+1;g[o+92>>2]=n+ +g[o+92>>2];o=c[b+(e*44|0)+16>>2]|0;p=h+(((o-d|0)/104|0)<<2)|0;c[p>>2]=(c[p>>2]|0)+1;g[o+92>>2]=n+ +g[o+92>>2];e=e+1|0}while((e|0)!=(f|0));d=c[a+712>>2]|0}if((d|0)<=0){if(!h)return}else{e=0;do{b=c[h+(e<<2)>>2]|0;if((b|0)>0){p=(c[a+720>>2]|0)+(e*104|0)+92|0;g[p>>2]=+g[p>>2]/+(b|0)}else g[(c[a+720>>2]|0)+(e*104|0)+92>>2]=0.0;e=e+1|0}while((e|0)!=(d|0))}c[6436]=(c[6436]|0)+1;hd(c[h+-4>>2]|0);return}function fg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=c[b+28>>2]|0;k=c[b+32>>2]|0;if(!(a[b+1301>>0]|0)){h=0;e=Nf(b,d,0,j+4|0,k+4|0,j+312|0,k+312|0,j+328|0,k+328|0)|0;do{f=b+868+(h<<6)|0;if(!((c[b+868+(h<<6)+56>>2]|0)==0?(a[b+868+(h<<6)+44>>0]|0)==0:0)){g=b+1208+(h<<4)|0;c[l>>2]=c[g>>2];c[l+4>>2]=c[g+4>>2];c[l+8>>2]=c[g+8>>2];c[l+12>>2]=c[g+12>>2];g=c[b+1304>>2]>>(h*3|0)+9;if(!(g&1))c[b+868+(h<<6)+28>>2]=c[c[d+32>>2]>>2];if(!(g&2))c[b+868+(h<<6)+36>>2]=c[c[d+32>>2]>>2];if(!(g&4))c[b+868+(h<<6)+32>>2]=c[d+4>>2];e=(Dd(b,f,j+4|0,k+4|0,j+312|0,k+312|0,j+328|0,k+328|0,d,e,l,1,0)|0)+e|0}h=h+1|0}while((h|0)!=3);i=l;return}h=0;e=0;do{f=b+868+(h<<6)|0;if(!((c[b+868+(h<<6)+56>>2]|0)==0?(a[b+868+(h<<6)+44>>0]|0)==0:0)){g=b+1208+(h<<4)|0;c[l>>2]=c[g>>2];c[l+4>>2]=c[g+4>>2];c[l+8>>2]=c[g+8>>2];c[l+12>>2]=c[g+12>>2];g=c[b+1304>>2]>>(h*3|0)+9;if(!(g&1))c[b+868+(h<<6)+28>>2]=c[c[d+32>>2]>>2];if(!(g&2))c[b+868+(h<<6)+36>>2]=c[c[d+32>>2]>>2];if(!(g&4))c[b+868+(h<<6)+32>>2]=c[d+4>>2];e=(Dd(b,f,j+4|0,k+4|0,j+312|0,k+312|0,j+328|0,k+328|0,d,e,l,1,0)|0)+e|0}h=h+1|0}while((h|0)!=3);Nf(b,d,e,j+4|0,k+4|0,j+312|0,k+312|0,j+328|0,k+328|0)|0;i=l;return}function gg(b){b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;d=c[b+988>>2]|0;if(d|0)xn(b+988|0,d);d=c[b+992>>2]|0;if(d|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+992>>2]=0;c[b+996>>2]=-1;d=c[b+1020>>2]|0;if(d|0){if(a[b+1024>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+1020>>2]=0}a[b+1024>>0]=1;c[b+1020>>2]=0;c[b+1012>>2]=0;c[b+1016>>2]=0;c[b+1004>>2]=0;if((c[b+752>>2]|0)<=0)return;r=0;do{j=c[b+760>>2]|0;k=j+(r*44|0)|0;e=c[j+(r*44|0)+8>>2]|0;f=c[j+(r*44|0)+12>>2]|0;d=c[j+(r*44|0)+16>>2]|0;o=+g[e+8>>2];p=+g[e+12>>2];q=+g[e+16>>2];i=+g[e+20>>2];v=+g[f+8>>2];l=v
>2];h=u>2];l=u
>1]|0)>=(e[m+(l<<6)+48+((1<
>1]|0):0)?(e[m+(l<<6)+54+((1<
>1]|0)>=(e[m+(k<<6)+48+((1<
>1]|0):0)?(x=c[a+92>>2]|0,Ib[c[(c[x>>2]|0)+12>>2]&31](x,m+(k<<6)|0,m+(l<<6)|0,j)|0,x=c[a+96>>2]|0,x|0):0)Ib[c[(c[x>>2]|0)+12>>2]&31](x,m+(k<<6)|0,m+(l<<6)|0,j)|0;t=m+(l<<6)+54+(H<<1)|0;b[t>>1]=(b[t>>1]|0)+-1<<16>>16}b[p>>1]=(b[p>>1]|0)+1<<16>>16;l=e[o>>1]|e[o+2>>1]<<16;t=e[n>>1]|e[n+2>>1]<<16;b[o>>1]=t;b[o+2>>1]=t>>>16;b[n>>1]=l;b[n+2>>1]=l>>>16;l=b[o+10>>1]|0}while(l<<16>>16!=0)}while(0);if((y|0)<0)uh(a,H,w,j);H=H+1|0}while((H|0)!=3);k=c[a+108>>2]|0;if(!k){i=I;return}yb[c[(c[k>>2]|0)+16>>2]&31](k,c[d+60>>2]|0,f,h,j);i=I;return}function ee(b,d,e){b=b|0;d=+d;e=+e;var f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0;s=i;i=i+144|0;f=c[b+8>>2]|0;if(!f){f=c[b+4>>2]|0;if(!f){d=0.0;k=0.0;n=0.0;o=0.0;l=0.0;m=0.0}else{r=+g[f+336>>2];n=+g[b+172>>2];o=+g[f+340>>2];p=+g[b+168>>2];m=+g[b+164>>2];q=+g[f+332>>2];d=r*n-o*p;k=+g[f+316>>2];n=o*m-n*q;o=+g[f+320>>2];l=+g[f+324>>2];m=p*q-r*m}}else{r=+g[f+332>>2];n=+g[b+172>>2];o=+g[f+336>>2];p=+g[b+168>>2];m=+g[b+164>>2];q=+g[f+328>>2];d=r*n-o*p;k=+g[f+312>>2];n=o*m-n*q;o=+g[f+316>>2];l=+g[f+320>>2];m=p*q-r*m}p=k+d;r=o+n;q=l+m;f=c[b+20>>2]|0;if(!f){f=c[b+16>>2]|0;if(!f){d=0.0;k=0.0;n=0.0;o=0.0;l=0.0;m=0.0}else{t=+g[f+336>>2];n=+g[b+188>>2];o=+g[f+340>>2];v=+g[b+184>>2];m=+g[b+180>>2];u=+g[f+332>>2];d=t*n-o*v;k=+g[f+316>>2];n=o*m-n*u;o=+g[f+320>>2];l=+g[f+324>>2];m=v*u-t*m}}else{v=+g[f+332>>2];n=+g[b+188>>2];o=+g[f+336>>2];t=+g[b+184>>2];m=+g[b+180>>2];u=+g[f+328>>2];d=v*n-o*t;k=+g[f+312>>2];n=o*m-n*u;o=+g[f+316>>2];l=+g[f+320>>2];m=t*u-v*m}p=p-(k+d);n=r-(o+n);d=q-(l+m);k=+g[b+196>>2];l=+g[b+200>>2];m=+g[b+204>>2];a[s+108+32>>0]=1;c[s+108+16>>2]=0;c[s+108+16+4>>2]=0;c[s+108+16+8>>2]=0;c[s+108+16+12>>2]=0;c[s+108>>2]=c[b+72>>2];c[s+108+4>>2]=c[b+72+4>>2];c[s+108+8>>2]=c[b+72+8>>2];c[s+108+12>>2]=c[b+72+12>>2];if(k*p+n*l+d*m<0.0){t=+g[b+212>>2];u=+g[s+108>>2]+((k*p+n*l+d*m)*k+(p-(k*p+n*l+d*m)*k)*t);g[s+108>>2]=u;v=(k*p+n*l+d*m)*l+t*(n-(k*p+n*l+d*m)*l)+ +g[s+108+4>>2];g[s+108+4>>2]=v;l=(k*p+n*l+d*m)*m+t*(d-(k*p+n*l+d*m)*m)+ +g[s+108+8>>2];g[s+108+8>>2]=l;f=s+108+4|0;h=s+108+8|0;j=s+108|0;d=u;k=v}else{f=s+108+4|0;h=s+108+8|0;j=s+108|0;d=+g[s+108>>2];k=+g[s+108+4>>2];l=+g[s+108+8>>2]}m=(+g[b+104>>2]*d+ +g[b+108>>2]*k+ +g[b+112>>2]*l)*e;n=(d*+g[b+120>>2]+k*+g[b+124>>2]+l*+g[b+128>>2])*e;d=(d*+g[b+136>>2]+k*+g[b+140>>2]+l*+g[b+144>>2])*e;g[j>>2]=m;g[f>>2]=n;g[h>>2]=d;g[s+108+12>>2]=0.0;f=c[b+4>>2]|0;if((f|0)!=(c[b+16>>2]|0)){f=s;h=s+108|0;j=f+36|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(j|0));v=-+g[s+4>>2];u=-+g[s+8>>2];g[s>>2]=-+g[s>>2];g[s+4>>2]=v;g[s+8>>2]=u;g[s+12>>2]=0.0;u=-+g[s+20>>2];v=-+g[s+24>>2];g[s+16>>2]=-+g[s+16>>2];g[s+20>>2]=u;g[s+24>>2]=v;g[s+28>>2]=0.0;Xh(b+4|0,s,b+164|0);Xh(b+16|0,s+108|0,b+180|0);i=s;return}if(!(m==m&n==n&(d==d&0.0==0.0))){i=s;return}v=+O(+(m*m+n*n+d*d));if(v<+g[f+368>>2]){i=s;return}h=c[s+108+32>>2]|0;v=+g[f+372>>2];g[s+72+12>>2]=0.0;g[s+72+28>>2]=0.0;c[s+72+32>>2]=h;g[s+72>>2]=-(m*v);g[s+72+4>>2]=-(n*v);g[s+72+8>>2]=-(d*v);g[s+72+16>>2]=v*-0.0;g[s+72+20>>2]=v*-0.0;g[s+72+24>>2]=v*-0.0;Xh(b+4|0,s+72|0,b+164|0);d=+g[(c[b+4>>2]|0)+372>>2];f=s+36|0;h=s+108|0;j=f+36|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(j|0));g[s+36>>2]=d*+g[s+36>>2];g[s+36+4>>2]=d*+g[s+36+4>>2];g[s+36+8>>2]=d*+g[s+36+8>>2];g[s+36+16>>2]=d*+g[s+36+16>>2];g[s+36+20>>2]=d*+g[s+36+20>>2];g[s+36+24>>2]=d*+g[s+36+24>>2];Xh(b+16|0,s+36|0,b+180|0);i=s;return}function fe(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0;A=i;i=i+192|0;x=c[b+4>>2]|0;if(+g[x+752>>2]
>2]=C;j=C}else j=q;if(D
>2]=E;l=E}else l=s;g[W+208>>2]=q;g[W+208+4>>2]=r;g[W+208+8>>2]=s;g[W+208+12>>2]=0.0;if(q>2]=C;j=C}else j=q;if(D
>2]=E;l=E}else l=s;g[W+208>>2]=q;g[W+208+4>>2]=r;g[W+208+8>>2]=s;g[W+208+12>>2]=0.0;if(q>2];B=E<(c[k>>2]=t,+g[k>>2]);h=(g[k>>2]=E,c[k>>2]|0);B=B?h:t;q=+g[d+36>>2];A=q<(c[k>>2]=u,+g[k>>2]);j=(g[k>>2]=q,c[k>>2]|0);A=A?j:u;r=+g[d+40>>2];z=r<(c[k>>2]=w,+g[k>>2]);l=(g[k>>2]=r,c[k>>2]|0);z=z?l:w;p=+g[d+44>>2];y=p
>2]=m,+g[k>>2])
>31;y=+g[b>>2];if(d){e=+g[a+188>>2];i=+g[b+4>>2];l=+g[a+192>>2];m=+g[b+8>>2];n=+g[a+196>>2];p=+g[a+556>>2];s=+g[a+372>>2];q=+g[a+560>>2];r=+g[a+376>>2];v=+g[a+564>>2];j=+g[a+380>>2];h=(g[k>>2]=((y-e)*(q-r)-(i-l)*(p-s))*((y-e)*(q-r)-(i-l)*(p-s))+(((i-l)*(v-j)-(m-n)*(q-r))*((i-l)*(v-j)-(m-n)*(q-r))+((m-n)*(p-s)-(y-e)*(v-j))*((m-n)*(p-s)-(y-e)*(v-j))),c[k>>2]|0);if((d|0)==1){o=+g[a+12>>2];t=p;u=q;p=+g[a+4>>2];q=+g[a+8>>2];f=0;x=7}else{t=p;u=q;x=6}}else{e=+g[a+188>>2];l=+g[a+192>>2];n=+g[a+196>>2];i=+g[b+4>>2];m=+g[b+8>>2];s=+g[a+372>>2];t=+g[a+556>>2];r=+g[a+376>>2];u=+g[a+560>>2];j=+g[a+380>>2];v=+g[a+564>>2];h=0;x=6}if((x|0)==6){p=+g[a+4>>2];q=+g[a+8>>2];D=i-q;o=+g[a+12>>2];B=m-o;A=t-s;C=u-r;z=v-j;f=(g[k>>2]=((y-p)*C-D*A)*((y-p)*C-D*A)+((D*z-B*C)*(D*z-B*C)+(B*A-(y-p)*z)*(B*A-(y-p)*z)),c[k>>2]|0);if((d|0)==2){d=0;x=8}else x=7}if((x|0)==7){C=y-p;E=i-q;A=m-o;B=t-e;z=u-l;D=v-n;d=(g[k>>2]=(C*z-E*B)*(C*z-E*B)+((E*D-A*z)*(E*D-A*z)+(A*B-C*D)*(A*B-C*D)),c[k>>2]|0);if(w)e=0.0;else x=8}if((x|0)==8){E=y-p;A=i-q;C=m-o;D=s-e;B=r-l;e=j-n;e=(E*B-A*D)*(E*B-A*D)+((A*e-C*B)*(A*e-C*B)+(C*D-E*e)*(C*D-E*e))}E=+N(+(c[k>>2]=h,+g[k>>2]));C=+N(+(c[k>>2]=f,+g[k>>2]));A=+N(+(c[k>>2]=d,+g[k>>2]));z=+N(+e);D=E>-999999984306749440.0?E:-999999984306749440.0;B=C>D?C:D;x=z>(A>B?A:B)?3:A>B?2:C>D?1:(E>-999999984306749440.0^1)<<31>>31;w=(x|0)<0;x=w?0:x;a=a+4+(x*184|0)|0;_m(a|0,b|0,184)|0;return x|0}function $e(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!b)if(!e){if(f|0){c[f>>2]=(a>>>0)%(d>>>0);c[f+4>>2]=0}e=0;f=(a>>>0)/(d>>>0)>>>0;return (C=e,f)|0}else{if(!f){e=0;f=0;return (C=e,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;e=0;f=0;return (C=e,f)|0}do if(d){if(e|0){h=(aa(e|0)|0)-(aa(b|0)|0)|0;if(h>>>0<=31){n=h+1|0;i=a>>>((h+1|0)>>>0)&h-31>>31|b<<31-h;m=b>>>((h+1|0)>>>0)&h-31>>31;g=0;h=a<<31-h;break}if(!f){e=0;f=0;return (C=e,f)|0}c[f>>2]=a|0;c[f+4>>2]=b|b&0;e=0;f=0;return (C=e,f)|0}if(d-1&d|0){h=(aa(d|0)|0)+33-(aa(b|0)|0)|0;n=h;i=32-h-1>>31&b>>>((h-32|0)>>>0)|(b<<32-h|a>>>(h>>>0))&h-32>>31;m=h-32>>31&b>>>(h>>>0);g=a<<64-h&32-h>>31;h=(b<<64-h|a>>>((h-32|0)>>>0))&32-h>>31|a<<32-h&h-33>>31;break}if(f|0){c[f>>2]=d-1&a;c[f+4>>2]=0}if((d|0)==1){e=b|b&0;f=a|0|0;return (C=e,f)|0}else{f=Sp(d|0)|0;e=b>>>(f>>>0)|0;f=b<<32-f|a>>>(f>>>0)|0;return (C=e,f)|0}}else{if(!e){if(f|0){c[f>>2]=(b>>>0)%(d>>>0);c[f+4>>2]=0}e=0;f=(b>>>0)/(d>>>0)>>>0;return (C=e,f)|0}if(!a){if(f|0){c[f>>2]=0;c[f+4>>2]=(b>>>0)%(e>>>0)}d=0;f=(b>>>0)/(e>>>0)>>>0;return (C=d,f)|0}if(!(e-1&e)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=e-1&b|b&0}d=0;f=b>>>((Sp(e|0)|0)>>>0);return (C=d,f)|0}h=(aa(e|0)|0)-(aa(b|0)|0)|0;if(h>>>0<=30){n=h+1|0;i=b<<31-h|a>>>((h+1|0)>>>0);m=b>>>((h+1|0)>>>0);g=0;h=a<<31-h;break}if(!f){e=0;f=0;return (C=e,f)|0}c[f>>2]=a|0;c[f+4>>2]=b|b&0;e=0;f=0;return (C=e,f)|0}while(0);if(!n){j=h;b=m;a=0;h=0}else{k=Kt(d|0|0,e|e&0|0,-1,-1)|0;l=C;j=h;b=m;a=n;h=0;do{p=j;j=g>>>31|j<<1;g=h|g<<1;p=i<<1|p>>>31|0;o=i>>>31|b<<1|0;Is(k|0,l|0,p|0,o|0)|0;n=C;m=n>>31|((n|0)<0?-1:0)<<1;h=m&1;i=Is(p|0,o|0,m&(d|0)|0,(((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1)&(e|e&0)|0)|0;b=C;a=a-1|0}while((a|0)!=0);a=0}if(f|0){c[f>>2]=i;c[f+4>>2]=b}o=(g|0)>>>31|j<<1|(0<<1|g>>>31)&0|a;p=(g<<1|0>>>31)&-2|h;return (C=o,p)|0}function af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;l=i;i=i+128|0;a=c[a+16>>2]|0;n=+g[a+892>>2];x=+g[a+896>>2];v=+g[a+900>>2];w=+g[a+908>>2];f=+g[a+912>>2];j=+g[a+916>>2];z=+g[b>>2];m=+g[b+4>>2];p=v*+g[b+8>>2];q=+g[b+16>>2];r=+g[b+20>>2];t=v*+g[b+24>>2];u=+g[b+32>>2];o=+g[b+36>>2];s=+g[b+40>>2];y=+g[b+48>>2];k=+g[b+52>>2];h=+g[b+56>>2];g[l>>2]=n*z+x*m+p+y;g[l+4>>2]=n*q+x*r+t+k;g[l+8>>2]=n*u+x*o+v*s+h;g[l+12>>2]=0.0;g[l+16>>2]=w*z+x*m+p+y;g[l+20>>2]=w*q+x*r+t+k;g[l+24>>2]=w*u+x*o+v*s+h;g[l+28>>2]=0.0;g[l+32>>2]=w*z+f*m+p+y;g[l+36>>2]=w*q+f*r+t+k;g[l+40>>2]=w*u+f*o+v*s+h;g[l+44>>2]=0.0;g[l+48>>2]=n*z+f*m+p+y;g[l+52>>2]=n*q+f*r+t+k;g[l+56>>2]=n*u+f*o+v*s+h;g[l+60>>2]=0.0;v=+g[b>>2];u=+g[b+4>>2];t=j*+g[b+8>>2];r=+g[b+16>>2];q=+g[b+20>>2];p=j*+g[b+24>>2];m=+g[b+32>>2];g[l+64>>2]=n*v+x*u+t+y;g[l+68>>2]=n*r+x*q+p+k;g[l+72>>2]=n*m+x*o+j*s+h;g[l+76>>2]=0.0;h=+g[b+36>>2];j=j*+g[b+40>>2];s=+g[b+48>>2];o=+g[b+52>>2];k=+g[b+56>>2];g[l+80>>2]=w*v+x*u+t+s;g[l+84>>2]=w*r+x*q+p+o;g[l+88>>2]=w*m+x*h+j+k;g[l+92>>2]=0.0;g[l+96>>2]=w*v+f*u+t+s;g[l+100>>2]=w*r+f*q+p+o;g[l+104>>2]=w*m+f*h+j+k;g[l+108>>2]=0.0;g[l+112>>2]=n*v+f*u+t+s;g[l+116>>2]=n*r+f*q+p+o;g[l+120>>2]=n*m+f*h+j+k;g[l+124>>2]=0.0;c[e>>2]=c[l>>2];c[e+4>>2]=c[l+4>>2];c[e+8>>2]=c[l+8>>2];c[e+12>>2]=c[l+12>>2];c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2];b=1;do{f=+g[l+(b<<4)>>2];if(f<+g[d>>2])g[d>>2]=f;h=+g[l+(b<<4)+4>>2];if(h<+g[d+4>>2])g[d+4>>2]=h;j=+g[l+(b<<4)+8>>2];if(j<+g[d+8>>2])g[d+8>>2]=j;k=+g[l+(b<<4)+12>>2];if(k<+g[d+12>>2])g[d+12>>2]=k;if(+g[e>>2]>2]-m;k=+g[s+(f*24|0)+4>>2]-n;l=+g[s+(f*24|0)+8>>2]-o;if(j*j+k*k+l*l!=p)if(j*j+k*k+l*l
>2]=p;t=p}else t=s;p=z+ +((~~((v-z)*(65533.0/(v-r))+1.0)&65535|1)&65535)/(65533.0/(v-r))+1.0;l=w+ +((~~((x-w)*(65533.0/(x-u))+1.0)&65535|1)&65535)/(65533.0/(x-u))+1.0;k=t+ +((~~((y-t)*(65533.0/(y-s))+1.0)&65535|1)&65535)/(65533.0/(y-s))+1.0;if(v1.1920928955078125e-07?(J=-((U-K)*(R-K-(U-K))+(V-L)*(S-L-(V-L))+(W-M)*(T-M-(W-M)))/f,J=J<0.0?0.0:J>1.0?1.0:J,I=U-K+(R-K-(U-K))*J,m=V-L+(S-L-(V-L))*J,J=W-M+(T-M-(W-M))*J,J*J+(I*I+m*m)
>2];J=L-+g[Y+28>>2];u=M-+g[Y+32>>2];u=+g[b+12>>2]+ +O(+(I*I+J*J+u*u))*2.0;if(!(q>2];V=+g[d+88>>2];W=+g[e+88>>2];f=+g[h+88>>2];f=!(V<=0.0)&!(W<=0.0)&!(f<=0.0)?V*s*(1.0/(t+s+r))+W*r*(1.0/(t+s+r))+t*(1.0/(t+s+r))*f:0.0;if(!(k+f>0.0))return;W=1.0/-+O(+q);q=p*W;p=m*W;n=n*W;o=c[b+4>>2]|0;d=c[b+8>>2]|0;l=c[(+g[o+316>>2]>+g[d+316>>2]?o+316|0:d+316|0)>>2]|0;m=k/(k+f)*+g[o+332>>2];f=f/(k+f)*+g[d+332>>2];d=c[o+832>>2]|0;if((d|0)==(c[o+836>>2]|0)?(Z=d|0?d<<1:1,(d|0)<(Z|0)):0){if(!Z)j=0;else{c[6435]=(c[6435]|0)+1;d=yc((Z*56|3)+16|0)|0;if(!d)d=0;else{c[(d+4+15&-16)+-4>>2]=d;d=d+4+15&-16}j=d;d=c[o+832>>2]|0}if((d|0)>0){e=0;do{h=j+(e*56|0)|0;b=(c[o+840>>2]|0)+(e*56|0)|0;i=h+56|0;do{c[h>>2]=c[b>>2];h=h+4|0;b=b+4|0}while((h|0)<(i|0));e=e+1|0}while((e|0)!=(d|0))}d=c[o+840>>2]|0;if(d|0){if(a[o+844>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[o+840>>2]=0}a[o+844>>0]=1;c[o+840>>2]=j;c[o+836>>2]=Z;d=c[o+832>>2]|0}Z=c[o+840>>2]|0;c[Z+(d*56|0)>>2]=Y;c[Z+(d*56|0)+4>>2]=X;g[Z+(d*56|0)+8>>2]=s*(1.0/(t+s+r));g[Z+(d*56|0)+12>>2]=r*(1.0/(t+s+r));g[Z+(d*56|0)+16>>2]=t*(1.0/(t+s+r));g[Z+(d*56|0)+20>>2]=0.0;g[Z+(d*56|0)+24>>2]=q;g[Z+(d*56|0)+28>>2]=p;g[Z+(d*56|0)+32>>2]=n;g[Z+(d*56|0)+36>>2]=0.0;g[Z+(d*56|0)+40>>2]=u;c[Z+(d*56|0)+44>>2]=l;g[Z+(d*56|0)+48>>2]=m;g[Z+(d*56|0)+52>>2]=f;c[o+832>>2]=(c[o+832>>2]|0)+1;return}function Ad(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+112|0;c[d+20>>2]=c[e+16>>2];c[d+24>>2]=c[e+20>>2];c[d+28>>2]=c[e+24>>2];c[d+32>>2]=c[e+28>>2];c[d+4>>2]=c[e>>2];c[d+8>>2]=c[e+4>>2];c[d+12>>2]=c[e+8>>2];c[d+16>>2]=c[e+12>>2];c[d+36>>2]=c[e+32>>2];c[d+40>>2]=c[e+36>>2];c[d+44>>2]=c[e+40>>2];c[d+48>>2]=c[e+44>>2];c[d+56>>2]=c[e+48>>2];a[d+60>>0]=(c[e+52>>2]|0)!=0&1;n=c[e+56>>2]|0;j=o+48|0;l=j+64|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));m=c[d+88>>2]|0;if((m|0)<(n|0)){if((c[d+92>>2]|0)<(n|0)){if(!n){f=0;g=m}else{c[6435]=(c[6435]|0)+1;f=yc(n<<6|19)|0;if(!f)f=0;else{c[(f+4+15&-16)+-4>>2]=f;f=f+4+15&-16}g=c[d+88>>2]|0}if((g|0)>0){h=0;do{j=f+(h<<6)|0;k=(c[d+96>>2]|0)+(h<<6)|0;l=j+64|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));h=h+1|0}while((h|0)!=(g|0))}g=c[d+96>>2]|0;if(g|0){if(a[d+100>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[g+-4>>2]|0)}c[d+96>>2]=0}a[d+100>>0]=1;c[d+96>>2]=f;c[d+92>>2]=n;g=d+96|0}else g=d+96|0;f=m;do{j=(c[g>>2]|0)+(f<<6)|0;k=o+48|0;l=j+64|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));f=f+1|0}while((f|0)!=(n|0))}c[d+88>>2]=n;if((n|0)>0){f=c[d+96>>2]|0;g=0;h=c[e+64>>2]|0;while(1){c[f+(g<<6)+16>>2]=c[h+16>>2];c[f+(g<<6)+20>>2]=c[h+20>>2];c[f+(g<<6)+24>>2]=c[h+24>>2];c[f+(g<<6)+28>>2]=c[h+28>>2];c[f+(g<<6)>>2]=c[h>>2];c[f+(g<<6)+4>>2]=c[h+4>>2];c[f+(g<<6)+8>>2]=c[h+8>>2];c[f+(g<<6)+12>>2]=c[h+12>>2];c[f+(g<<6)+32>>2]=c[h+32>>2];c[f+(g<<6)+36>>2]=c[h+36>>2];c[f+(g<<6)+40>>2]=c[h+40>>2];g=g+1|0;if((g|0)==(n|0))break;else h=h+48|0}}k=c[e+60>>2]|0;c[o+32>>2]=0;c[o+32+4>>2]=0;c[o+32+8>>2]=0;c[o+32+12>>2]=0;j=c[d+128>>2]|0;if((j|0)<(k|0)){if((c[d+132>>2]|0)<(k|0)){if(!k){f=0;g=j}else{c[6435]=(c[6435]|0)+1;f=yc((k<<4|3)+16|0)|0;if(!f)f=0;else{c[(f+4+15&-16)+-4>>2]=f;f=f+4+15&-16}g=c[d+128>>2]|0}if((g|0)>0){h=0;do{n=f+(h<<4)|0;m=(c[d+136>>2]|0)+(h<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];h=h+1|0}while((h|0)!=(g|0))}g=c[d+136>>2]|0;if(g|0){if(a[d+140>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[g+-4>>2]|0)}c[d+136>>2]=0}a[d+140>>0]=1;c[d+136>>2]=f;c[d+132>>2]=k;g=d+136|0}else g=d+136|0;f=j;do{n=(c[g>>2]|0)+(f<<4)|0;c[n>>2]=c[o+32>>2];c[n+4>>2]=c[o+32+4>>2];c[n+8>>2]=c[o+32+8>>2];c[n+12>>2]=c[o+32+12>>2];f=f+1|0}while((f|0)!=(k|0))}c[d+128>>2]=k;if((k|0)>0){f=c[d+136>>2]|0;g=0;h=c[e+68>>2]|0;while(1){c[f+(g<<4)+12>>2]=c[h+12>>2];b[f+(g<<4)+6>>1]=b[h+6>>1]|0;b[f+(g<<4)+8>>1]=b[h+8>>1]|0;b[f+(g<<4)+10>>1]=b[h+10>>1]|0;b[f+(g<<4)>>1]=b[h>>1]|0;b[f+(g<<4)+2>>1]=b[h+2>>1]|0;b[f+(g<<4)+4>>1]=b[h+4>>1]|0;g=g+1|0;if((g|0)==(k|0))break;else h=h+16|0}}c[d+144>>2]=c[e+76>>2];k=c[e+80>>2]|0;j=c[d+152>>2]|0;if((j|0)<(k|0)){if((c[d+156>>2]|0)<(k|0)){if(!k){f=0;g=j}else{c[6435]=(c[6435]|0)+1;f=yc(k<<5|19)|0;if(!f)f=0;else{c[(f+4+15&-16)+-4>>2]=f;f=f+4+15&-16}g=c[d+152>>2]|0}if((g|0)>0){h=0;do{n=f+(h<<5)|0;m=(c[d+160>>2]|0)+(h<<5)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];h=h+1|0}while((h|0)!=(g|0))}g=c[d+160>>2]|0;if(g|0){if(a[d+164>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[g+-4>>2]|0)}c[d+160>>2]=0}a[d+164>>0]=1;c[d+160>>2]=f;c[d+156>>2]=k;g=d+160|0}else g=d+160|0;f=j;do{n=(c[g>>2]|0)+(f<<5)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[n+16>>2]=c[o+16>>2];c[n+20>>2]=c[o+20>>2];c[n+24>>2]=c[o+24>>2];c[n+28>>2]=c[o+28>>2];f=f+1|0}while((f|0)!=(k|0))}c[d+152>>2]=k;if((k|0)<=0){i=o;return}g=c[d+160>>2]|0;h=0;f=c[e+72>>2]|0;while(1){b[g+(h<<5)+6>>1]=b[f+14>>1]|0;b[g+(h<<5)+8>>1]=b[f+16>>1]|0;b[g+(h<<5)+10>>1]=b[f+18>>1]|0;b[g+(h<<5)>>1]=b[f+8>>1]|0;b[g+(h<<5)+2>>1]=b[f+10>>1]|0;b[g+(h<<5)+4>>1]=b[f+12>>1]|0;c[g+(h<<5)+12>>2]=c[f>>2];c[g+(h<<5)+16>>2]=c[f+4>>2];h=h+1|0;if((h|0)==(k|0))break;else f=f+20|0}i=o;return}function Bd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[b>>2]=3180;d=c[b+192>>2]|0;if(d|0)Ab[c[(c[d>>2]|0)+4>>2]&255](d);a:do if((c[b+1112>>2]|0)>0)do{h=c[c[b+1120>>2]>>2]|0;d=c[h+348>>2]|0;if(d|0){hh(b+1048|0,d)|0;e=c[b+1052>>2]|0;if(e|0){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0)}c[b+1052>>2]=d;c[b+1060>>2]=(c[b+1060>>2]|0)+-1}Fk(h);if(h|0){c[6436]=(c[6436]|0)+1;hd(c[h+-4>>2]|0)}d=c[b+1112>>2]|0;if((d|0)<=0)break a;g=c[b+1120>>2]|0;e=0;do{f=g+(e<<2)|0;if((c[f>>2]|0)==(h|0)){i=18;break}e=e+1|0}while((e|0)<(d|0));if((i|0)==18){i=0;if((e|0)<(d|0)){c[f>>2]=c[g+(d+-1<<2)>>2];c[(c[b+1120>>2]|0)+(d+-1<<2)>>2]=h;c[b+1112>>2]=d+-1;d=d+-1|0}}}while((d|0)>0);while(0);d=c[b+872>>2]|0;if((d|0)>0){f=0;do{e=c[(c[b+880>>2]|0)+(f<<2)>>2]|0;if(e){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0);d=c[b+872>>2]|0}f=f+1|0}while((f|0)<(d|0))}d=c[b+852>>2]|0;if((d|0)>0){f=0;do{e=c[(c[b+860>>2]|0)+(f<<2)>>2]|0;if(e){c[6436]=(c[6436]|0)+1;hd(c[e+-4>>2]|0);d=c[b+852>>2]|0}f=f+1|0}while((f|0)<(d|0))}d=c[b+1244>>2]|0;if(d|0){if(a[b+1248>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+1244>>2]=0}a[b+1248>>0]=1;c[b+1244>>2]=0;c[b+1236>>2]=0;c[b+1240>>2]=0;d=c[b+1140>>2]|0;if(d|0){if(a[b+1144>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+1140>>2]=0}a[b+1144>>0]=1;c[b+1140>>2]=0;c[b+1132>>2]=0;c[b+1136>>2]=0;d=c[b+1120>>2]|0;if(d|0){if(a[b+1124>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+1120>>2]=0}a[b+1124>>0]=1;c[b+1120>>2]=0;c[b+1112>>2]=0;c[b+1116>>2]=0;pi(b+1048|0);pi(b+988|0);pi(b+928|0);d=c[b+880>>2]|0;if(d|0){if(a[b+884>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+880>>2]=0}a[b+884>>0]=1;c[b+880>>2]=0;c[b+872>>2]=0;c[b+876>>2]=0;d=c[b+860>>2]|0;if(d|0){if(a[b+864>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+860>>2]=0}a[b+864>>0]=1;c[b+860>>2]=0;c[b+852>>2]=0;c[b+856>>2]=0;d=c[b+840>>2]|0;if(d|0){if(a[b+844>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+840>>2]=0}a[b+844>>0]=1;c[b+840>>2]=0;c[b+832>>2]=0;c[b+836>>2]=0;d=c[b+820>>2]|0;if(d|0){if(a[b+824>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+820>>2]=0}a[b+824>>0]=1;c[b+820>>2]=0;c[b+812>>2]=0;c[b+816>>2]=0;d=c[b+800>>2]|0;if(d|0){if(a[b+804>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+800>>2]=0}a[b+804>>0]=1;c[b+800>>2]=0;c[b+792>>2]=0;c[b+796>>2]=0;d=c[b+780>>2]|0;if(d|0){if(a[b+784>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+780>>2]=0}a[b+784>>0]=1;c[b+780>>2]=0;c[b+772>>2]=0;c[b+776>>2]=0;d=c[b+760>>2]|0;if(d|0){if(a[b+764>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+760>>2]=0}a[b+764>>0]=1;c[b+760>>2]=0;c[b+752>>2]=0;c[b+756>>2]=0;d=c[b+740>>2]|0;if(d|0){if(a[b+744>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+740>>2]=0}a[b+744>>0]=1;c[b+740>>2]=0;c[b+732>>2]=0;c[b+736>>2]=0;d=c[b+720>>2]|0;if(d|0){if(a[b+724>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+720>>2]=0}a[b+724>>0]=1;c[b+720>>2]=0;c[b+712>>2]=0;c[b+716>>2]=0;d=c[b+700>>2]|0;if(d|0){if(a[b+704>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+700>>2]=0}a[b+704>>0]=1;c[b+700>>2]=0;c[b+692>>2]=0;c[b+696>>2]=0;d=c[b+512>>2]|0;if(d|0){if(a[b+516>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+512>>2]=0}a[b+516>>0]=1;c[b+512>>2]=0;c[b+504>>2]=0;c[b+508>>2]=0;d=c[b+492>>2]|0;if(d|0){if(a[b+496>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+492>>2]=0}a[b+496>>0]=1;c[b+492>>2]=0;c[b+484>>2]=0;c[b+488>>2]=0;d=c[b+444>>2]|0;if(d|0){if(!((a[b+448>>0]&1)==0|(d|0)==0)){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+444>>2]=0}a[b+448>>0]=1;c[b+444>>2]=0;c[b+436>>2]=0;c[b+440>>2]=0;d=c[b+424>>2]|0;if(d|0){if(!((a[b+428>>0]&1)==0|(d|0)==0)){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+424>>2]=0}a[b+428>>0]=1;c[b+424>>2]=0;c[b+416>>2]=0;c[b+420>>2]=0;d=c[b+404>>2]|0;if(d|0){if(!((a[b+408>>0]&1)==0|(d|0)==0)){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+404>>2]=0}a[b+408>>0]=1;c[b+404>>2]=0;c[b+396>>2]=0;c[b+400>>2]=0;d=c[b+276>>2]|0;if(!d){a[b+280>>0]=1;c[b+276>>2]=0;c[b+268>>2]=0;i=b+272|0;c[i>>2]=0;c[b>>2]=5008;return}if(a[b+280>>0]|0){c[6436]=(c[6436]|0)+1;hd(c[d+-4>>2]|0)}c[b+276>>2]=0;a[b+280>>0]=1;c[b+276>>2]=0;c[b+268>>2]=0;i=b+272|0;c[i>>2]=0;c[b>>2]=5008;return}function Cd(a,d,f,h,j,k,l,m,n){a=a|0;d=d|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+16|0;Bj(a,w+6|0,+g[d>>2],+g[d+4>>2],+g[d+8>>2],0);Bj(a,w,+g[f>>2],+g[f+4>>2],+g[f+8>>2],1);v=b[a+64>>1]|0;u=c[a+60>>2]|0;b[a+64>>1]=b[u+((v&65535)<<6)+48>>1]|0;o=(b[a+56>>1]|0)+1<<16>>16;b[a+56>>1]=o;c[u+((v&65535)<<6)+12>>2]=v&65535;c[u+((v&65535)<<6)>>2]=j;b[u+((v&65535)<<6)+4>>1]=k;b[u+((v&65535)<<6)+6>>1]=l;c[u+((v&65535)<<6)+8>>2]=n;q=(o&65535)<<1&65534;b[u+54>>1]=(e[u+54>>1]|0)+2;p=c[a+68>>2]|0;n=e[p+(q+-1<<2)>>1]|e[p+(q+-1<<2)+2>>1]<<16;b[p+((q|1)<<2)>>1]=n;b[p+((q|1)<<2)+2>>1]=n>>>16;p=c[a+68>>2]|0;b[p+(q+-1<<2)>>1]=b[w+6>>1]|0;b[p+(q+-1<<2)+2>>1]=v;b[p+(q<<2)>>1]=b[w>>1]|0;b[p+(q<<2)+2>>1]=v;b[u+((v&65535)<<6)+48>>1]=q+-1;b[u+((v&65535)<<6)+54>>1]=(o&65535)<<1;p=(c[a+60>>2]|0)+56|0;b[p>>1]=(e[p>>1]|0)+2;p=c[a+72>>2]|0;n=e[p+(q+-1<<2)>>1]|e[p+(q+-1<<2)+2>>1]<<16;b[p+((q|1)<<2)>>1]=n;b[p+((q|1)<<2)+2>>1]=n>>>16;p=c[a+72>>2]|0;b[p+(q+-1<<2)>>1]=b[w+6+2>>1]|0;b[p+(q+-1<<2)+2>>1]=v;b[p+(q<<2)>>1]=b[w+2>>1]|0;b[p+(q<<2)+2>>1]=v;b[u+((v&65535)<<6)+50>>1]=q+-1;b[u+((v&65535)<<6)+56>>1]=(o&65535)<<1;p=(c[a+60>>2]|0)+58|0;b[p>>1]=(e[p>>1]|0)+2;p=c[a+76>>2]|0;n=e[p+(q+-1<<2)>>1]|e[p+(q+-1<<2)+2>>1]<<16;b[p+((q|1)<<2)>>1]=n;b[p+((q|1)<<2)+2>>1]=n>>>16;p=c[a+76>>2]|0;b[p+(q+-1<<2)>>1]=b[w+6+4>>1]|0;b[p+(q+-1<<2)+2>>1]=v;b[p+(q<<2)>>1]=b[w+4>>1]|0;b[p+(q<<2)+2>>1]=v;b[u+((v&65535)<<6)+52>>1]=q+-1;b[u+((v&65535)<<6)+58>>1]=(o&65535)<<1;o=c[a+68>>2]|0;q=e[u+((v&65535)<<6)+48>>1]|0;p=c[a+60>>2]|0;n=b[o+(q<<2)+-4>>1]|0;if((e[o+(q<<2)>>1]|0)<(n&65535)){s=p+((e[o+(q<<2)+2>>1]|0)<<6)+48|0;r=o+(q<<2)|0;q=o+(q<<2)+-4|0;while(1){o=e[r+-2>>1]|0;if(!(n&1)){t=p+(o<<6)+48|0;b[t>>1]=(b[t>>1]|0)+1<<16>>16}else{t=p+(o<<6)+54|0;b[t>>1]=(b[t>>1]|0)+1<<16>>16}b[s>>1]=(b[s>>1]|0)+-1<<16>>16;o=e[r>>1]|e[r+2>>1]<<16;n=e[q>>1]|e[q+2>>1]<<16;b[r>>1]=n;b[r+2>>1]=n>>>16;b[q>>1]=o;b[q+2>>1]=o>>>16;o=r+-4|0;q=q+-4|0;n=b[q>>1]|0;if((e[o>>1]|0)>=(n&65535))break;p=c[a+60>>2]|0;r=o}o=c[a+68>>2]|0}n=e[u+((v&65535)<<6)+54>>1]|0;q=o+(n<<2)|0;p=b[q+-4>>1]|0;a:do if((e[q>>1]|0)<(p&65535)){s=c[a+60>>2]|0;t=s+((e[o+(n<<2)+2>>1]|0)<<6)+54|0;n=p;r=q;p=q+-4|0;while(1){o=e[r+-2>>1]|0;if(!(n&1)){s=s+(o<<6)+48|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}else{s=s+(o<<6)+54|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}b[t>>1]=(b[t>>1]|0)+-1<<16>>16;o=e[r>>1]|e[r+2>>1]<<16;n=e[p>>1]|e[p+2>>1]<<16;b[r>>1]=n;b[r+2>>1]=n>>>16;b[p>>1]=o;b[p+2>>1]=o>>>16;o=r+-4|0;p=p+-4|0;n=b[p>>1]|0;if((e[o>>1]|0)>=(n&65535))break a;s=c[a+60>>2]|0;r=o}}while(0);o=c[a+72>>2]|0;q=e[u+((v&65535)<<6)+50>>1]|0;p=c[a+60>>2]|0;n=b[o+(q<<2)+-4>>1]|0;if((e[o+(q<<2)>>1]|0)<(n&65535)){s=p+((e[o+(q<<2)+2>>1]|0)<<6)+50|0;r=o+(q<<2)|0;q=o+(q<<2)+-4|0;while(1){o=e[r+-2>>1]|0;if(!(n&1)){t=p+(o<<6)+50|0;b[t>>1]=(b[t>>1]|0)+1<<16>>16}else{t=p+(o<<6)+56|0;b[t>>1]=(b[t>>1]|0)+1<<16>>16}b[s>>1]=(b[s>>1]|0)+-1<<16>>16;o=e[r>>1]|e[r+2>>1]<<16;n=e[q>>1]|e[q+2>>1]<<16;b[r>>1]=n;b[r+2>>1]=n>>>16;b[q>>1]=o;b[q+2>>1]=o>>>16;o=r+-4|0;q=q+-4|0;n=b[q>>1]|0;if((e[o>>1]|0)>=(n&65535))break;p=c[a+60>>2]|0;r=o}o=c[a+72>>2]|0}n=e[u+((v&65535)<<6)+56>>1]|0;q=o+(n<<2)|0;p=b[q+-4>>1]|0;b:do if((e[q>>1]|0)<(p&65535)){s=c[a+60>>2]|0;t=s+((e[o+(n<<2)+2>>1]|0)<<6)+56|0;n=p;r=q;p=q+-4|0;while(1){o=e[r+-2>>1]|0;if(!(n&1)){s=s+(o<<6)+50|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}else{s=s+(o<<6)+56|0;b[s>>1]=(b[s>>1]|0)+1<<16>>16}b[t>>1]=(b[t>>1]|0)+-1<<16>>16;o=e[r>>1]|e[r+2>>1]<<16;n=e[p>>1]|e[p+2>>1]<<16;b[r>>1]=n;b[r+2>>1]=n>>>16;b[p>>1]=o;b[p+2>>1]=o>>>16;o=r+-4|0;p=p+-4|0;n=b[p>>1]|0;if((e[o>>1]|0)>=(n&65535))break b;s=c[a+60>>2]|0;r=o}}while(0);wh(a,2,b[u+((v&65535)<<6)+52>>1]|0);uh(a,2,b[u+((v&65535)<<6)+58>>1]|0,m);o=c[a+60>>2]|0;n=c[a+108>>2]|0;if(!n){j=o+((v&65535)<<6)|0;i=w;return j|0}c[o+((v&65535)<<6)+60>>2]=gc[c[(c[n>>2]|0)+8>>2]&3](n,d,f,h,j,k,l,m,0)|0;j=o+((v&65535)<<6)|0;i=w;return j|0}function Dd(b,d,e,f,h,i,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;A=_(c[l+24>>2]|0,m)|0;m=a[d+44>>0]|0;z=c[d+56>>2]|0;if(!(m<<24>>24!=0|(z|0)!=0)){A=0;return A|0}C=c[(o|0?l+12|0:l+8|0)>>2]|0;B=c[(o|0?l+20|0:l+16|0)>>2]|0;c[C+(A<<2)>>2]=c[n>>2];c[C+(A+1<<2)>>2]=c[n+4>>2];c[C+(A+2<<2)>>2]=c[n+8>>2];g[B+(A<<2)>>2]=-+g[n>>2];g[B+(A+1<<2)>>2]=-+g[n+4>>2];g[B+(A+2<<2)>>2]=-+g[n+8>>2];do if(!o){q=+g[b+1176>>2];if(!(a[b+1301>>0]|0)){t=q-+g[e+48>>2];w=+g[b+1180>>2]-+g[e+52>>2];x=+g[b+1184>>2]-+g[e+56>>2];v=+g[n+8>>2];s=+g[n+4>>2];u=+g[n>>2];C=c[l+12>>2]|0;g[C+(A<<2)>>2]=w*v-x*s;g[C+(A+1<<2)>>2]=x*u-t*v;g[C+(A+2<<2)>>2]=t*s-w*u;u=+g[b+1176>>2]-+g[f+48>>2];w=+g[b+1180>>2]-+g[f+52>>2];s=+g[b+1184>>2]-+g[f+56>>2];t=+g[n+8>>2];v=+g[n+4>>2];x=+g[n>>2];C=c[l+20>>2]|0;g[C+(A<<2)>>2]=-(w*t-s*v);g[C+(A+1<<2)>>2]=-(s*x-u*t);g[C+(A+2<<2)>>2]=-(u*v-w*x);break}I=q-+g[f+48>>2];H=+g[b+1180>>2]-+g[f+52>>2];F=+g[b+1184>>2]-+g[f+56>>2];u=+g[n>>2];G=+g[n+4>>2];E=+g[n+8>>2];K=+g[b+1112>>2]-+g[e+48>>2];t=+g[b+1116>>2]-+g[e+52>>2];q=+g[b+1120>>2]-+g[e+56>>2];v=+g[d+52>>2]-+g[d+48>>2];J=u*(u*K+G*t+E*q)+u*v-u*(I*u+H*G+F*E);D=G*(u*K+G*t+E*q)+G*v-G*(I*u+H*G+F*E);v=E*(u*K+G*t+E*q)+E*v-E*(I*u+H*G+F*E);x=+g[b+1272>>2];w=+g[b+1276>>2];s=E*(t-G*(u*K+G*t+E*q)+x*D)-G*(q-E*(u*K+G*t+E*q)+x*v);r=u*(q-E*(u*K+G*t+E*q)+x*v)-E*(K-u*(u*K+G*t+E*q)+x*J);q=G*(K-u*(u*K+G*t+E*q)+x*J)-u*(t-G*(u*K+G*t+E*q)+x*D);t=(H-G*(I*u+H*G+F*E)-w*D)*E-(F-E*(I*u+H*G+F*E)-w*v)*G;v=(F-E*(I*u+H*G+F*E)-w*v)*u-(I-u*(I*u+H*G+F*E)-w*J)*E;u=(I-u*(I*u+H*G+F*E)-w*J)*G-(H-G*(I*u+H*G+F*E)-w*D)*u;if(!((p|0)!=0|(a[b+1280>>0]|0)==0)){t=w*t;v=w*v;u=w*u;s=x*s;r=x*r;q=x*q}C=(c[l+12>>2]|0)+(A<<2)|0;g[C>>2]=s;g[C+4>>2]=r;g[C+8>>2]=q;C=c[l+20>>2]|0;g[C+(A<<2)>>2]=-t;g[C+(A+1<<2)>>2]=-v;g[C+(A+2<<2)>>2]=-u}while(0);if(z|0?+g[d>>2]==+g[d+4>>2]:0){m=c[l+28>>2]|0;g[m+(A<<2)>>2]=0.0;q=0.0;e=l+28|0}else y=11;do if((y|0)==11){e=c[l+28>>2]|0;g[e+(A<<2)>>2]=0.0;if(!(m<<24>>24)){if(z|0){m=e;q=0.0;e=l+28|0;break}else m=1;return m|0}c[(c[l+32>>2]|0)+(A<<2)>>2]=c[d+28>>2];if(z|0){m=e;q=+g[e+(A<<2)>>2];e=l+28|0;break}v=+g[d+8>>2];q=o|0?v:-v;r=+g[d+52>>2];s=+g[d>>2];t=+g[d+4>>2];u=+g[l>>2]*+g[d+32>>2];do if(!(s>t))if(!(s==t)){if(q/u<0.0)if(r>=s?s-q/u>r:0){q=(s-r)/(q/u);break}else{q=r
0.0)if(r<=t?t-q/u>2]=q;C=1;return C|0}else{if(!(q>0.0)){C=1;return C|0}q=-(q*r);m=(c[e>>2]|0)+(A<<2)|0;if(!(+g[m>>2]>q)){C=1;return C|0}g[m>>2]=q;C=1;return C|0}return 0}function Ed(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var l=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0;u=i;i=i+288|0;q=c[b+4>>2]|0;a[q+312>>0]=0;c[q>>2]=0;a[q+356>>0]=1;c[q+292>>2]=1566444395;c[q+296>>2]=1566444395;c[q+300>>2]=1566444395;g[q+304>>2]=0.0;c[q+336>>2]=0;c[q+336+4>>2]=0;c[q+336+8>>2]=0;c[q+336+12>>2]=0;a[q+336+16>>0]=0;a[q+332>>0]=a[q+332>>0]&-16;r=+g[e+48>>2]-+g[d+48>>2]-(+g[h+48>>2]-+g[f+48>>2]);s=+g[e+52>>2]-+g[d+52>>2]-(+g[h+52>>2]-+g[f+52>>2]);t=+g[e+56>>2]-+g[d+56>>2]-(+g[h+56>>2]-+g[f+56>>2]);c[u+216>>2]=9160;g[u+216+36>>2]=999999984306749440.0;a[u+216+40>>0]=0;q=c[b+8>>2]|0;p=c[b+12>>2]|0;o=c[b+4>>2]|0;c[u+136>>2]=9208;c[u+136+4>>2]=0;c[u+136+8>>2]=1065353216;c[u+136+12>>2]=0;g[u+136+16>>2]=0.0;c[u+136+20>>2]=0;c[u+136+24>>2]=o;c[u+136+28>>2]=q;c[u+136+32>>2]=p;c[u+136+36>>2]=c[q+4>>2];c[u+136+40>>2]=c[p+4>>2];g[u+136+44>>2]=+Sb[c[(c[q>>2]|0)+48>>2]&15](q);g[u+136+48>>2]=+Sb[c[(c[p>>2]|0)+48>>2]&15](p);a[u+136+52>>0]=0;c[u+136+60>>2]=-1;c[u+136+72>>2]=1;c[u+136+76>>2]=1;g[u+128>>2]=999999984306749440.0;c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2];c[u+16>>2]=c[d+16>>2];c[u+16+4>>2]=c[d+16+4>>2];c[u+16+8>>2]=c[d+16+8>>2];c[u+16+12>>2]=c[d+16+12>>2];c[u+32>>2]=c[d+32>>2];c[u+32+4>>2]=c[d+32+4>>2];c[u+32+8>>2]=c[d+32+8>>2];c[u+32+12>>2]=c[d+32+12>>2];c[u+48>>2]=c[d+48>>2];c[u+48+4>>2]=c[d+48+4>>2];c[u+48+8>>2]=c[d+48+8>>2];c[u+48+12>>2]=c[d+48+12>>2];c[u+64>>2]=c[f>>2];c[u+64+4>>2]=c[f+4>>2];c[u+64+8>>2]=c[f+8>>2];c[u+64+12>>2]=c[f+12>>2];c[u+80>>2]=c[f+16>>2];c[u+80+4>>2]=c[f+16+4>>2];c[u+80+8>>2]=c[f+16+8>>2];c[u+80+12>>2]=c[f+16+12>>2];c[u+96>>2]=c[f+32>>2];c[u+96+4>>2]=c[f+32+4>>2];c[u+96+8>>2]=c[f+32+8>>2];c[u+96+12>>2]=c[f+32+12>>2];c[u+112>>2]=c[f+48>>2];c[u+112+4>>2]=c[f+48+4>>2];c[u+112+8>>2]=c[f+48+8>>2];c[u+112+12>>2]=c[f+48+12>>2];Vc(u+136|0,u,u+216|0,0,0);p=(a[u+216+40>>0]|0)==0;q=u+216+20|0;c[u+264>>2]=c[q>>2];c[u+264+4>>2]=c[q+4>>2];c[u+264+8>>2]=c[q+8>>2];c[u+264+12>>2]=c[q+12>>2];if(p){j=0;i=u;return j|0}n=+g[u+216+36>>2];l=+g[u+216+16>>2];b=c[u+216+12>>2]|0;m=c[u+216+8>>2]|0;o=c[u+216+4>>2]|0;do if(n>1.0000000474974513e-03){l=0.0;p=0;while(1){if((p|0)>31){b=0;p=13;break}w=r*(c[k>>2]=o,+g[k>>2]);w=s*(c[k>>2]=m,+g[k>>2])+w;v=l;l=l-n/(t*(c[k>>2]=b,+g[k>>2])+w);if(!(!(l<=v)&(!(l<0.0)&!(l>1.0)))){b=0;p=13;break}zb[c[c[j>>2]>>2]&31](j,l);w=1.0-l;g[u+48>>2]=w*+g[d+48>>2]+l*+g[e+48>>2];g[u+52>>2]=w*+g[d+52>>2]+l*+g[e+52>>2];g[u+56>>2]=w*+g[d+56>>2]+l*+g[e+56>>2];g[u+112>>2]=w*+g[f+48>>2]+l*+g[h+48>>2];g[u+116>>2]=w*+g[f+52>>2]+l*+g[h+52>>2];g[u+120>>2]=w*+g[f+56>>2]+l*+g[h+56>>2];Vc(u+136|0,u,u+216|0,0,0);if(!(a[u+216+40>>0]|0)){b=0;p=13;break}n=+g[u+216+36>>2];if(n<0.0){p=8;break}c[u+264>>2]=c[q>>2];c[u+264+4>>2]=c[q+4>>2];c[u+264+8>>2]=c[q+8>>2];c[u+264+12>>2]=c[q+12>>2];b=c[u+216+12>>2]|0;m=c[u+216+8>>2]|0;o=c[u+216+4>>2]|0;if(!(n>1.0000000474974513e-03)){p=10;break}else p=p+1|0}if((p|0)==8){g[j+164>>2]=l;f=c[u+216+8>>2]|0;e=c[u+216+12>>2]|0;h=c[u+216+16>>2]|0;c[j+132>>2]=c[u+216+4>>2];c[j+136>>2]=f;c[j+140>>2]=e;c[j+144>>2]=h;c[j+148>>2]=c[q>>2];c[j+148+4>>2]=c[q+4>>2];c[j+148+8>>2]=c[q+8>>2];c[j+148+12>>2]=c[q+12>>2];j=1;i=u;return j|0}else if((p|0)==10){n=l;l=+g[u+216+16>>2];break}else if((p|0)==13){i=u;return b|0}}else n=0.0;while(0);w=r*(c[k>>2]=o,+g[k>>2]);w=s*(c[k>>2]=m,+g[k>>2])+w;if(t*(c[k>>2]=b,+g[k>>2])+w>=-+g[j+172>>2]){j=0;i=u;return j|0}g[j+164>>2]=n;c[j+132>>2]=o;c[j+136>>2]=m;c[j+140>>2]=b;g[j+144>>2]=l;c[j+148>>2]=c[u+264>>2];c[j+148+4>>2]=c[u+264+4>>2];c[j+148+8>>2]=c[u+264+8>>2];c[j+148+12>>2]=c[u+264+12>>2];j=1;i=u;return j|0}function Fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0;m=i;i=i+240|0;c[a+4>>2]=(c[a+4>>2]|0)+1;k=c[b+36>>2]|0;j=c[d+36>>2]|0;f=c[a+8>>2]|0;K=c[(c[f+4>>2]|0)+24>>2]|0;d=c[K+(k*80|0)+64>>2]|0;b=(c[(c[a+12>>2]|0)+4>>2]|0)+24|0;e=c[(c[b>>2]|0)+(j*80|0)+64>>2]|0;f=c[f+12>>2]|0;n=+g[f>>2];I=+g[f+4>>2];J=+g[f+8>>2];q=+g[f+16>>2];s=+g[f+20>>2];u=+g[f+24>>2];r=+g[f+32>>2];v=+g[f+36>>2];D=+g[f+40>>2];w=+g[K+(k*80|0)>>2];x=+g[K+(k*80|0)+16>>2];y=+g[K+(k*80|0)+32>>2];z=+g[K+(k*80|0)+4>>2];A=+g[K+(k*80|0)+20>>2];B=+g[K+(k*80|0)+36>>2];t=+g[K+(k*80|0)+8>>2];C=+g[K+(k*80|0)+24>>2];E=+g[K+(k*80|0)+40>>2];o=+g[K+(k*80|0)+48>>2];p=+g[K+(k*80|0)+52>>2];H=+g[K+(k*80|0)+56>>2];F=+g[f+48>>2]+(n*o+I*p+J*H);G=+g[f+52>>2]+(q*o+s*p+u*H);H=+g[f+56>>2]+(r*o+v*p+D*H);g[m+176>>2]=n*w+I*x+J*y;g[m+176+4>>2]=n*z+I*A+J*B;g[m+176+8>>2]=n*t+I*C+J*E;g[m+176+12>>2]=0.0;g[m+176+16>>2]=q*w+s*x+u*y;g[m+176+20>>2]=q*z+s*A+u*B;g[m+176+24>>2]=q*t+s*C+u*E;g[m+176+28>>2]=0.0;g[m+176+32>>2]=r*w+v*x+D*y;g[m+176+36>>2]=r*z+v*A+D*B;g[m+176+40>>2]=r*t+v*C+D*E;g[m+176+44>>2]=0.0;g[m+176+48>>2]=F;g[m+176+52>>2]=G;g[m+176+56>>2]=H;g[m+176+60>>2]=0.0;f=c[(c[a+12>>2]|0)+12>>2]|0;H=+g[f>>2];G=+g[f+4>>2];F=+g[f+8>>2];E=+g[f+16>>2];D=+g[f+20>>2];C=+g[f+24>>2];v=+g[f+32>>2];t=+g[f+36>>2];r=+g[f+40>>2];b=c[b>>2]|0;B=+g[b+(j*80|0)>>2];A=+g[b+(j*80|0)+16>>2];z=+g[b+(j*80|0)+32>>2];y=+g[b+(j*80|0)+4>>2];x=+g[b+(j*80|0)+20>>2];w=+g[b+(j*80|0)+36>>2];u=+g[b+(j*80|0)+8>>2];s=+g[b+(j*80|0)+24>>2];q=+g[b+(j*80|0)+40>>2];J=+g[b+(j*80|0)+48>>2];I=+g[b+(j*80|0)+52>>2];n=+g[b+(j*80|0)+56>>2];p=+g[f+48>>2]+(H*J+G*I+F*n);o=+g[f+52>>2]+(E*J+D*I+C*n);n=+g[f+56>>2]+(v*J+t*I+r*n);g[m+112>>2]=H*B+G*A+F*z;g[m+112+4>>2]=H*y+G*x+F*w;g[m+112+8>>2]=H*u+G*s+F*q;g[m+112+12>>2]=0.0;g[m+112+16>>2]=E*B+D*A+C*z;g[m+112+20>>2]=E*y+D*x+C*w;g[m+112+24>>2]=E*u+D*s+C*q;g[m+112+28>>2]=0.0;g[m+112+32>>2]=v*B+t*A+r*z;g[m+112+36>>2]=v*y+t*x+r*w;g[m+112+40>>2]=v*u+t*s+r*q;g[m+112+44>>2]=0.0;g[m+112+48>>2]=p;g[m+112+52>>2]=o;g[m+112+56>>2]=n;g[m+112+60>>2]=0.0;mc[c[(c[d>>2]|0)+8>>2]&127](d,m+176|0,m+96|0,m+80|0);mc[c[(c[e>>2]|0)+8>>2]&127](e,m+112|0,m+64|0,m+48|0);if(!(+g[m+96>>2]>+g[m+48>>2])?!(+g[m+80>>2]<+g[m+64>>2]):0)b=1;else b=0;if(!(!(+g[m+96+8>>2]>+g[m+48+8>>2])?!(+g[m+80+8>>2]<+g[m+64+8>>2]):0))b=0;if(+g[m+96+4>>2]>+g[m+48+4>>2]){i=m;return}if(+g[m+80+4>>2]<+g[m+64+4>>2]|b^1){i=m;return}f=c[a+8>>2]|0;b=c[f+8>>2]|0;c[m+24>>2]=f;c[m+24+4>>2]=d;c[m+24+8>>2]=b;c[m+24+12>>2]=m+176;c[m+24+16>>2]=-1;c[m+24+20>>2]=k;b=c[a+12>>2]|0;f=c[b+8>>2]|0;c[m>>2]=b;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=m+112;c[m+16>>2]=-1;c[m+20>>2]=j;f=c[a+28>>2]|0;c[6423]=(c[6423]|0)+1;b=((j<<16|k)+~((j<<16|k)<<15)>>10^(j<<16|k)+~((j<<16|k)<<15))*9|0;b=(c[f+12>>2]|0)+-1&((b>>6^b)+~((b>>6^b)<<11)>>16^(b>>6^b)+~((b>>6^b)<<11));a:do if((b|0)<(c[f+32>>2]|0)?(h=c[(c[f+40>>2]|0)+(b<<2)>>2]|0,(h|0)!=-1):0){e=c[f+16>>2]|0;b=h;while(1){d=e+(b*12|0)|0;if((c[d>>2]|0)==(k|0)?(c[e+(b*12|0)+4>>2]|0)==(j|0):0)break;b=c[(c[f+60>>2]|0)+(b<<2)>>2]|0;if((b|0)==-1){l=16;break a}}if(d)b=c[e+(b*12|0)+8>>2]|0;else l=16}else l=16;while(0);if((l|0)==16){b=c[a+16>>2]|0;b=Ib[c[(c[b>>2]|0)+8>>2]&31](b,m+24|0,m,c[a+32>>2]|0)|0;K=c[a+28>>2]|0;c[(Ob[c[(c[K>>2]|0)+12>>2]&63](K,k,j)|0)+8>>2]=b}K=c[a+24>>2]|0;h=c[K+8>>2]|0;l=c[K+12>>2]|0;c[K+8>>2]=m+24;c[K+12>>2]=m;ic[c[(c[K>>2]|0)+8>>2]&127](K,-1,k);K=c[a+24>>2]|0;ic[c[(c[K>>2]|0)+12>>2]&127](K,-1,j);yb[c[(c[b>>2]|0)+8>>2]&31](b,m+24|0,m,c[a+20>>2]|0,c[a+24>>2]|0);K=c[a+24>>2]|0;c[K+8>>2]=h;c[K+12>>2]=l;i=m;return}function Gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0;z=i;i=i+48|0;switch(c[b+4>>2]|0){case 8:{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;i=z;return}case 0:{w=+g[b+28>>2];x=+g[b+28+4>>2];x=+g[d+4>>2]>=0.0?x:-x;y=+g[b+28+8>>2];y=+g[d+8>>2]>=0.0?y:-y;g[a>>2]=+g[d>>2]>=0.0?w:-w;g[a+4>>2]=x;g[a+8>>2]=y;g[a+12>>2]=0.0;i=z;return}case 1:{u=+g[d>>2];v=+g[d+4>>2];y=+g[d+8>>2];x=u*+g[b+56>>2]+v*+g[b+56+4>>2]+y*+g[b+56+8>>2];w=u*+g[b+56+16>>2]+v*+g[b+56+20>>2]+y*+g[b+56+24>>2];y=u*+g[b+56+32>>2]+v*+g[b+56+36>>2]+y*+g[b+56+40>>2];d=x
>>0|(o|0)==(s|0)&k>>>0