From 76fb0a13cdfa0cd639b6b847ed37378a4276370a Mon Sep 17 00:00:00 2001 From: J08nY Date: Mon, 18 Apr 2016 00:19:05 +0200 Subject: canvas fallback done --- game.js | 131 ++++++++++++++++++++++++++----------------- game.js.map | 2 +- game.ts | 184 ++++++++++++++++++++++++++++++++++-------------------------- 3 files changed, 185 insertions(+), 132 deletions(-) diff --git a/game.js b/game.js index 42a7c1b..d05e353 100644 --- a/game.js +++ b/game.js @@ -1,6 +1,7 @@ /// /// /// +/// 'use strict'; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -8,11 +9,11 @@ var __extends = (this && this.__extends) || function (d, b) { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var Vector3 = THREE.Vector3; +var Face3 = THREE.Face3; var Material = THREE.Material; var Geometry = THREE.Geometry; -var smoothstep = THREE.Math.smoothstep; -var TetrahedronGeometry = THREE.TetrahedronGeometry; -var Face3 = THREE.Face3; +var CanvasRenderer = THREE.CanvasRenderer; +var WebGLRenderer = THREE.WebGLRenderer; //wtf fix.. Physijs.scripts.worker = "physi_js/physijs_worker.js"; Physijs.scripts.ammo = "ammo.js"; @@ -187,12 +188,10 @@ var Poly = (function (_super) { __extends(Poly, _super); function Poly(pos, polarity) { var _this = this; - _super.call(this, Poly.generateGeometry(), Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: polarity > 0 ? 0x0010a0 : 0xa01000 - }), 1, 1), 0.3); - this.pos = pos; + _super.call(this, Poly.generateGeometry(), polarity > 0 ? Poly.blue : Poly.red, 0.3); this.polarity = polarity; this.addEventListener("ready", function () { return _this.init(); }); + this.position.copy(pos); } Poly.prototype.init = function () { //launch the poly into space @@ -218,6 +217,15 @@ var Poly = (function (_super) { Poly.prototype.collides = function (other) { return this.position.clone().sub(other.position).lengthSq() <= ((other.radius) ^ 2); }; + Poly.prototype.dispose = function () { + this.geometry.dispose(); + }; + Poly.red = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0xa01000 + }), 1, 1); + Poly.blue = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x0010a0 + }), 1, 1); return Poly; }(Physijs.PlaneMesh)); var Morph = (function (_super) { @@ -249,6 +257,7 @@ var Morph = (function (_super) { } }; Morph.prototype.updateGeometry = function () { + this.geometry.dispose(); this.geometry = Morph.generateGeometry(this.level); this.geometry.computeBoundingSphere(); this.radius = this.geometry.boundingSphere.radius; @@ -268,15 +277,16 @@ var Morph = (function (_super) { Morph.prototype.collides = function (other) { return this.position.clone().sub(other.position).length() <= (this.radius + other.radius); }; + Morph.prototype.dispose = function () { + this.geometry.dispose(); + }; Morph.levels = [4, 6, 12, 20]; return Morph; }(Physijs.SphereMesh)); var Projectile = (function (_super) { __extends(Projectile, _super); function Projectile(pos, dir, level) { - _super.call(this, pos.clone().add(dir.clone().setLength(2)), level, Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: 0x303030 - }), 0.5, 0.3), 0.01); + _super.call(this, pos.clone().add(dir.clone().setLength(2)), level, Projectile.mat, 0.05); this.pos = pos; this.dir = dir; this.time = 0; @@ -291,6 +301,9 @@ var Projectile = (function (_super) { Projectile.prototype.tick = function (delta) { this.time += delta; }; + Projectile.mat = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x303030 + }), 0.5, 0.3); return Projectile; }(Morph)); var LiveMorph = (function (_super) { @@ -314,9 +327,7 @@ var LiveMorph = (function (_super) { var Mob = (function (_super) { __extends(Mob, _super); function Mob(pos, level) { - _super.call(this, pos, level, Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: 0xa01b00 - }), .8, .6), 2); + _super.call(this, pos, level, Mob.mat, 2); this.speeds = [25.5, 20, 17, 14]; } Mob.prototype.approach = function (player) { @@ -328,11 +339,13 @@ var Mob = (function (_super) { var amount = Math.floor(Math.random() * 10) + 3; for (var i = 0; i < amount; i++) { var poly = new Poly(this.position, Math.random() > 0.5 ? 1 : -1); - poly.position.copy(this.position); polys.push(poly); } return polys; }; + Mob.mat = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0xa01b00 + }), .8, .6); return Mob; }(LiveMorph)); var Player = (function (_super) { @@ -394,38 +407,24 @@ var Level = (function (_super) { this.mobs = []; this.projectiles = []; this.polygons = []; - //private bounds:Geometry[] = []; this.time = 0; this.setGravity(new THREE.Vector3(0, -40, 0)); this.add(player); for (var i = 0; i < 15; i++) { - var a = Math.random() > 0.5 ? -1 : 1; - var b = Math.random() > 0.5 ? -1 : 1; - var x = Math.floor(Math.random() * 20 + 10); - var z = Math.floor(Math.random() * 20 + 10); - var size = Math.floor(Math.random() * 4); - this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size); + this.spawn(); } - /* - let light:any = new THREE.DirectionalLight(0xFFFFFF); - light.position.set(20, 40, -15); - light.target.position.copy(player.position); - light.castShadow = true; - light.shadow.camera.left = -60; - light.shadow.camera.top = -60; - light.shadow.camera.right = 60; - light.shadow.camera.bottom = 60; - light.shadow.camera.near = 20; - light.shadow.camera.far = 200; - light.shadow.bias = -.0001; - light.shadow.mapSize.width = light.shadow.mapSize.height = 4096; - this.add(light); - */ var groundGeometry = new THREE.BoxGeometry(1000, 1, 1000); - var ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0); - ground.receiveShadow = true; - this.add(ground); + this.ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0); + this.add(this.ground); } + Level.prototype.spawn = function () { + var a = Math.random() > 0.5 ? -1 : 1; + var b = Math.random() > 0.5 ? -1 : 1; + var x = Math.floor(Math.random() * 20 + 10); + var z = Math.floor(Math.random() * 20 + 10); + var size = Math.floor(Math.random() * 4); + this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size); + }; Level.prototype.spawnMob = function (where, size) { var mob = new Mob(where, size); this.add(mob); @@ -462,7 +461,7 @@ var Level = (function (_super) { if (mob.collides(projectile)) { if (mob.level == projectile.level) { collided = true; - mob.damage((projectile.level + 1) * 10); + mob.damage(34); break; } } @@ -499,12 +498,32 @@ var Level = (function (_super) { } return true; }); + //spawn new mob? + if (Math.random() < 0.03) { + this.spawn(); + } //physijs this.simulate(delta, 1); }; Level.prototype.timeLeft = function () { return Level.durations[this.level] - (this.time / 1000); }; + Level.prototype.dispose = function () { + var _this = this; + this.ground.geometry.dispose(); + this.mobs.forEach(function (obj) { + _this.remove(obj); + obj.dispose(); + }); + this.projectiles.forEach(function (obj) { + _this.remove(obj); + obj.dispose(); + }); + this.polygons.forEach(function (obj) { + _this.remove(obj); + obj.dispose(); + }); + }; //unused Level.generateGeometry = function (level) { switch (level) { @@ -552,14 +571,20 @@ var Game = (function () { _this.camera.updateProjectionMatrix(); _this.renderer.setSize(window.innerWidth, window.innerHeight); }; - this.renderer = new THREE.WebGLRenderer({ - antialias: true - }); - this.renderer.setClearColor(0xffffff); - this.renderer.setPixelRatio(window.devicePixelRatio); - this.renderer.setSize(window.innerWidth, window.innerHeight); - this.renderer.shadowMap.enabled = true; - this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; + if (Detector.webgl) { + this.renderer = new THREE.WebGLRenderer({ antialias: true }); + var rendr = this.renderer; + rendr.setClearColor(0xffffff); + rendr.setPixelRatio(window.devicePixelRatio); + rendr.setSize(window.innerWidth, window.innerHeight); + } + else { + this.renderer = new THREE.CanvasRenderer(); + var rendr = this.renderer; + rendr.setClearColor(0xffffff); + rendr.setPixelRatio(window.devicePixelRatio); + rendr.setSize(window.innerWidth, window.innerHeight); + } document.body.appendChild(this.renderer.domElement); window.addEventListener("resize", this.onWindowResize, false); this.camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 1, 1000); @@ -696,13 +721,13 @@ var Game = (function () { if (this.level.level != Level.numLevels - 1) { if (result) { //next level, shit! + this.level.dispose(); this.newLevel(this.level.level + 1); this.start(); return; } } - else { - } + this.level.dispose(); window.removeEventListener("resize", this.onWindowResize, false); var blocker = document.getElementById("block"); blocker.style.display = '-webkit-box'; @@ -712,12 +737,12 @@ var Game = (function () { instructions.style.fontSize = "40px"; instructions.innerHTML = result ? "You won!" : "You lost!"; instructions.style.display = ""; + if (Detector.webgl) { + this.renderer.dispose(); + } }; return Game; }()); -if (!Detector.webgl) { - Detector.addGetWebGLMessage(); -} window.onload = function () { var game = new Game(); game.init(); diff --git a/game.js.map b/game.js.map index 62d477e..094bbca 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":"AAAA,8CAA8C;AAC9C,6CAA6C;AAC7C,iDAAiD;AACjD,6DAA6D;AAC7D,YAAY,CAAC;;;;;;AAEb,IAAO,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC3B,IAAO,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAO,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAO,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAC7C,IAAO,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AAE3C,WAAW;AACX,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,4BAA4B,CAAC;AACtD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;AAGjC;IAGI,qBAAoB,IAAS,EAAU,OAAmB,EAAU,YAAwB;QAHhG,iBA0DC;QAvDuB,SAAI,GAAJ,IAAI,CAAK;QAAU,YAAO,GAAP,OAAO,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAY;QAF5F,YAAO,GAAW,KAAK,CAAC;QAqBxB,aAAQ,GAAG,UAAC,KAAK;YACb,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,IAAI,GAAG,GAAO,QAAQ,CAAC;YAEvB,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,KAAK,OAAO,IAAI,GAAG,CAAC,qBAAqB,KAAK,OAAO,IAAI,GAAG,CAAC,wBAAwB,KAAK,OAAO,CAAC,CAAC,CAAC;gBAC1H,QAAQ;gBACR,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACpC,EAAE,CAAC,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClF,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;YACL,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,MAAM;gBACN,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC3C,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;gBACxC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAEnC,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACrC,EAAE,CAAC,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvC,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAK;YACZ,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACzC,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAK;YACZ,IAAI,OAAO,GAAO,QAAQ,CAAC,IAAI,CAAC;YAChC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC;YAC7H,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAEzC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjC,CAAC,CAAC;IArDF,CAAC;IAED,0BAAI,GAAJ;QACI,IAAI,eAAe,GAAG,oBAAoB,IAAI,QAAQ,IAAI,uBAAuB,IAAI,QAAQ,IAAI,0BAA0B,IAAI,QAAQ,CAAC;QACxI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC;QACX,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrE,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxE,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE3E,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtE,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC/D,CAAC;IAsCL,kBAAC;AAAD,CAAC,AA1DD,IA0DC;AAED;IAeI;QAfJ,iBAkFC;QArEW,WAAM,GAAG,EAAE,CAAC;QA8BpB,cAAS,GAAG,UAAC,KAAmB;YAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAC,CAAC;QAC9F,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAmB;YAC1B,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;QACzC,CAAC,CAAC;IApCF,CAAC;IAED,yBAAM,GAAN;QACI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1B,4DAA4D;YAC5D,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9C,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;YAClC,CAAC;YAED,iDAAiD;YACjD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,QAAQ,CAAC,CAAC,sBAAsB;YACpC,CAAC;YAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;QACnC,CAAC;IACL,CAAC;IAcD,uBAAI,GAAJ,UAAK,GAAG;QACJ,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,0BAAO,GAAP,UAAQ,GAAG;QACP,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAE,GAAF,UAAG,GAAG;QACF,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,2BAAQ,GAAR;QACI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,6BAAU,GAAV;QACI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,gBAAO,GAAd,UAAe,OAAO;QAClB,MAAM,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAE;YAClC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAhFD;;OAEG;IACI,UAAC,GAAG;QACP,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;QAClD,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO;QAC7C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM;QACnD,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM;QAC7C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;KAC1C,CAAC;IAsEN,eAAC;AAAD,CAAC,AAlFD,IAkFC;AAED;;GAEG;AACH;IAOI,eAAoB,MAAa;QAPrC,iBA2CC;QApCuB,WAAM,GAAN,MAAM,CAAO;QAJjC,cAAS,GAAU,CAAC,CAAC;QACrB,cAAS,GAAU,CAAC,CAAC;QACb,YAAO,GAAG,EAAE,CAAC;QAKrB,gBAAW,GAAG,UAAC,KAAgB;YAC3B,KAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,KAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,gBAAW,GAAG,UAAC,KAAgB;YAC3B,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAClC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,cAAS,GAAG,UAAC,KAAgB;YACzB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QACvC,CAAC,CAAC;IAlBF,CAAC;IAoBD,uBAAO,GAAP,UAAQ,MAAa;QACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,wBAAQ,GAAR;QACI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,0BAAU,GAAV;QACI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACL,YAAC;AAAD,CAAC,AA3CD,IA2CC;AAED;IAAmB,wBAAiB;IAehC,cAAY,GAAW,EAAS,QAAe;QAfnD,iBAoDC;QApCO,kBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAD7C,aAAQ,GAAR,QAAQ,CAAO;QAE3C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,IAAI,EAAE,EAAX,CAAW,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAI,GAAJ;QACI,4BAA4B;QAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,sBAAiB,GAAxB;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,qBAAgB,GAAvB;QACI,iDAAiD;QACjD,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,uBAAQ,GAAR,UAAS,KAAW;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,sBAAO,GAAP;QACI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAC3B,CAAC;IAjDM,QAAG,GAAoB,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC;QACzE,KAAK,EAAE,QAAQ;KAClB,CAAC,EACF,CAAC,EACD,CAAC,CACJ,CAAC;IACK,SAAI,GAAoB,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC;QAC1E,KAAK,EAAE,QAAQ;KAClB,CAAC,EACF,CAAC,EACD,CAAC,CACJ,CAAC;IAuCN,WAAC;AAAD,CAAC,AApDD,CAAmB,OAAO,CAAC,SAAS,GAoDnC;AAGD;IAAoB,yBAAkB;IAIlC,eAAY,GAAW,EAAS,KAAY,EAAE,QAAwB,EAAE,IAAY;QAJxF,iBA4DC;QAvDO,kBAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QADzB,UAAK,GAAL,KAAK,CAAO;QAExC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,IAAI,EAAE,EAAX,CAAW,CAAC,CAAC;IACtD,CAAC;IAED,oBAAI,GAAJ;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,sBAAgB,GAAvB,UAAwB,KAAY;QAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACf,KAAK,CAAC;gBACF,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC3C,KAAK,CAAC;gBACF,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,EAAE;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,EAAE;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD;gBACI,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC/C,CAAC;IACL,CAAC;IAEO,8BAAc,GAAtB;QACI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;IACtD,CAAC;IAED,sBAAM,GAAN;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,oBAAI,GAAJ;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,wBAAQ,GAAR,UAAS,KAAW;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IAED,uBAAO,GAAP;QACI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAzDM,YAAM,GAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IA0D5C,YAAC;AAAD,CAAC,AA5DD,CAAoB,OAAO,CAAC,UAAU,GA4DrC;AAGD;IAAyB,8BAAK;IAU1B,oBAAoB,GAAW,EAAU,GAAW,EAAE,KAAY;QAC9D,kBAAM,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAD9D,QAAG,GAAH,GAAG,CAAQ;QAAU,QAAG,GAAH,GAAG,CAAQ;QATpD,SAAI,GAAU,CAAC,CAAC;IAWhB,CAAC;IAED,yBAAI,GAAJ;QACI,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;;IAED,2BAAM,GAAN;QACI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,yBAAI,GAAJ,UAAK,KAAK;QACN,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IACvB,CAAC;IArBM,cAAG,GAAoB,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC;QACzE,KAAK,EAAE,QAAQ;KAClB,CAAC,EACF,GAAG,EACH,GAAG,CACN,CAAC;IAiBN,iBAAC;AAAD,CAAC,AAzBD,CAAyB,KAAK,GAyB7B;AAGD;IAAwB,6BAAK;IAA7B;QAAwB,8BAAK;QACzB,SAAI,GAAU,GAAG,CAAC;IAgBtB,CAAC;IAZG,0BAAM,GAAN,UAAO,EAAS;QACZ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,2BAAO,GAAP;QACI,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,4BAAQ,GAAR;QACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACL,gBAAC;AAAD,CAAC,AAjBD,CAAwB,KAAK,GAiB5B;AAGD;IAAkB,uBAAS;IAWvB,aAAY,GAAW,EAAE,KAAY;QACjC,kBAAM,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAVlC,WAAM,GAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAWrC,CAAC;IAED,sBAAQ,GAAR,UAAS,MAAa;QAClB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,iBAAG,GAAH;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAChD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAzBM,OAAG,GAAoB,OAAO,CAAC,cAAc,CAChD,IAAI,KAAK,CAAC,iBAAiB,CAAC;QACxB,KAAK,EAAE,QAAQ;KAClB,CAAC,EACF,EAAE,EACF,EAAE,CAAC,CAAC;IAsBZ,UAAC;AAAD,CAAC,AA/BD,CAAkB,SAAS,GA+B1B;AAED;IAAqB,0BAAS;IAe1B,gBAAY,GAAW;QACnB,kBAAM,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,CAChC,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACxB,KAAK,EAAE,QAAQ;SAClB,CAAC,EACF,CAAC,EACD,GAAG,CACF,EACD,GAAG,CAAC,CAAC;QAtBb,UAAK,GAAU,CAAC,CAAC;QACjB,SAAI,GAAU,CAAC,CAAC;QAEhB,YAAO,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,WAAM,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,WAAM,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,YAAO,GAAU,CAAC,CAAC;QACnB,UAAK,GAAU,CAAC,CAAC;QAEjB,gBAAW,GAAgB,EAAE,CAAC;QAG9B,WAAM,GAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAW/B,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAI,GAAJ;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,qBAAI,GAAJ;QACI,IAAI,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,uBAAM,GAAN,UAAO,SAAgB;QACnB,IAAI,CAAC,OAAO,IAAI,SAAS,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,qBAAI,GAAJ,UAAK,SAAgB;QACjB,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,sBAAK,GAAL,UAAM,MAAa;QACf,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;IAED,yBAAQ,GAAR;QACI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5D,CAAC;IAED,6BAAY,GAAZ;QACI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,2BAAU,GAAV;QACI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,0BAAS,GAAT;QACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrH,CAAC;IAEL,aAAC;AAAD,CAAC,AAnED,CAAqB,SAAS,GAmE7B;AAED;IAAoB,yBAAa;IAgB7B,eAAoB,MAAa,EAAS,KAAY;QAClD,iBAAO,CAAC;QADQ,WAAM,GAAN,MAAM,CAAO;QAAS,UAAK,GAAL,KAAK,CAAO;QAf9C,SAAI,GAAS,EAAE,CAAC;QAChB,gBAAW,GAAgB,EAAE,CAAC;QAC9B,aAAQ,GAAU,EAAE,CAAC;QAErB,SAAI,GAAU,CAAC,CAAC;QAapB,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,qBAAK,GAAL;QACI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,wBAAQ,GAAR,UAAS,KAAa,EAAE,IAAW;QAC/B,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,oBAAI,GAAJ,UAAK,KAAY;QAAjB,iBA6EC;QA5EG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QAEnB,qDAAqD;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;YAClB,GAAG,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC5B,UAAU;gBACV,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,UAAU;YAClD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;YACvC,IAAI,QAAQ,GAAW,KAAK,CAAC;YAC7B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACR,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,GAAG,CAAC,CAAY,UAAS,EAAT,KAAA,KAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS,CAAC;oBAArB,IAAI,GAAG,SAAA;oBACR,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;4BAChC,QAAQ,GAAG,IAAI,CAAC;4BAChB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BACf,KAAK,CAAC;wBACV,CAAC;oBACL,CAAC;iBACJ;YACL,CAAC;YACD,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACX,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG;YAC7B,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1B,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACT,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;oBACf,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,IAAI;YACtC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpB,KAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACJ,KAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBACD,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,SAAS;QACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,wBAAQ,GAAR;QACI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAO,GAAP;QAAA,iBAeC;QAdG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;YAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG;YACzB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG;YACtB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ;IACD,sBAAgB,GAAvB,UAAwB,KAAY;QAChC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACZ,QAAQ;YACR,KAAK,CAAC;gBACF,IAAI,QAAQ,GAAG;oBACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC3C,CAAC;gBACF,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,OAAO,GAAG;oBACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;iBACrC,CAAC;gBACF,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClF,CAAC;gBACD,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAjKM,eAAS,GAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,eAAS,GAAU,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IAE1C,SAAG,GAAoB,OAAO,CAAC,cAAc,CAChD,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,EAC9C,CAAC,EACD,CAAC,CACJ,CAAC;IA4JN,YAAC;AAAD,CAAC,AA1KD,CAAoB,OAAO,CAAC,KAAK,GA0KhC;AAED,IAAK,SAKJ;AALD,WAAK,SAAS;IACV,uDAAW,CAAA;IACX,+CAAO,CAAA;IACP,6CAAM,CAAA;IACN,+CAAO,CAAA;AACX,CAAC,EALI,SAAS,KAAT,SAAS,QAKb;AAED;IAoBI;QApBJ,iBAgOC;QArNW,UAAK,GAAU,CAAC,CAAC;QACjB,UAAK,GAAU,CAAC,CAAC;QACjB,cAAS,GAAU,CAAC,CAAC;QACrB,aAAQ,GAAU,IAAI,GAAG,EAAE,CAAC;QAC5B,WAAM,GAAU,EAAE,CAAC;QA8C3B,mBAAc,GAAG;YACb,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;YAC5D,KAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YAErC,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC,CAAC;QA7CE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,GAAwB,IAAI,CAAC,QAAQ,CAAC;YAC/C,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC7C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAyB,IAAI,CAAC,QAAQ,CAAC;YAChD,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC7C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,mBAAI,GAAJ;QACI,aAAa;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/C,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,uBAAQ,GAAR,UAAS,GAAU;QACf,YAAY;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEzC,aAAa;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IASD;;OAEG;IACH,qBAAM,GAAN;QACI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,mBAAI,GAAJ,UAAK,KAAY;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEvB,QAAQ;QACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEzC,iBAAiB;QACjB,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,iCAAiC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,QAAQ;QACR,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;QACL,CAAC;QAED,OAAO;QACP,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,aAAa;QACb,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM;QACN,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,kBAAG,GAAH,UAAI,SAAU;QAAd,iBA4BC;QA3BG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACb,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnB,qBAAqB,CAAC,cAAM,OAAA,KAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC5B,EAAE,CAAC,CAAC,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC1B,0BAA0B;gBAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,KAAK,CAAC;YACV,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,qBAAqB,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,oBAAK,GAAL;QACI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEtB,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,oBAAK,GAAL;QACI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAExB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,mBAAI,GAAJ,UAAK,MAAsB;QAAtB,sBAAsB,GAAtB,cAAsB;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACT,mBAAmB;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC;YACX,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAEjE,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC3D,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACrC,YAAY,CAAC,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;QAC3D,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QAEhC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACD,IAAI,CAAC,QAAS,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC;IACL,CAAC;IACL,WAAC;AAAD,CAAC,AAhOD,IAgOC;AAED,MAAM,CAAC,MAAM,GAAG;IACZ,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;IAEZ,oCAAoC;IACpC,4CAA4C;IAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAE3D,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC"} \ No newline at end of file diff --git a/game.ts b/game.ts index 277584c..12facb5 100644 --- a/game.ts +++ b/game.ts @@ -1,14 +1,15 @@ /// /// /// +/// 'use strict'; import Vector3 = THREE.Vector3; +import Face3 = THREE.Face3; import Material = THREE.Material; import Geometry = THREE.Geometry; -import smoothstep = THREE.Math.smoothstep; -import TetrahedronGeometry = THREE.TetrahedronGeometry; -import Face3 = THREE.Face3; +import CanvasRenderer = THREE.CanvasRenderer; +import WebGLRenderer = THREE.WebGLRenderer; //wtf fix.. Physijs.scripts.worker = "physi_js/physijs_worker.js"; @@ -209,16 +210,23 @@ class Mouse { class Poly extends Physijs.PlaneMesh { - constructor(private pos:Vector3, public polarity:number) { - super(Poly.generateGeometry(), - Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: polarity > 0 ? 0x0010a0 : 0xa01000 - }), - 1, - 1 - ), - 0.3); + static red:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0xa01000 + }), + 1, + 1 + ); + static blue:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x0010a0 + }), + 1, + 1 + ); + + constructor(pos:Vector3, public polarity:number) { + super(Poly.generateGeometry(), polarity > 0 ? Poly.blue : Poly.red, 0.3); this.addEventListener("ready", () => this.init()); + this.position.copy(pos); } init():void { @@ -248,6 +256,10 @@ class Poly extends Physijs.PlaneMesh { collides(other:Morph):boolean { return this.position.clone().sub(other.position).lengthSq() <= ((other.radius) ^ 2); } + + dispose() { + this.geometry.dispose() + } } @@ -284,6 +296,7 @@ class Morph extends Physijs.SphereMesh { } private updateGeometry():void { + this.geometry.dispose(); this.geometry = Morph.generateGeometry(this.level); this.geometry.computeBoundingSphere(); this.radius = this.geometry.boundingSphere.radius; @@ -307,22 +320,24 @@ class Morph extends Physijs.SphereMesh { return this.position.clone().sub(other.position).length() <= (this.radius + other.radius); } - + dispose():void { + this.geometry.dispose(); + } } class Projectile extends Morph { time:number = 0; + static mat:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({ + color: 0x303030 + }), + 0.5, + 0.3 + ); + constructor(private pos:Vector3, private dir:Vector3, level:number) { - super(pos.clone().add(dir.clone().setLength(2)), level, - Physijs.createMaterial(new THREE.MeshBasicMaterial({ - color: 0x303030 - }), - 0.5, - 0.3 - ), - 0.01); + super(pos.clone().add(dir.clone().setLength(2)), level, Projectile.mat, 0.05); } init():void { @@ -363,14 +378,15 @@ class Mob extends LiveMorph { speeds:number[] = [25.5, 20, 17, 14]; + static mat:Physijs.Material = Physijs.createMaterial( + new THREE.MeshBasicMaterial({ + color: 0xa01b00 + }), + .8, + .6); + constructor(pos:Vector3, level:number) { - super(pos, level, Physijs.createMaterial( - new THREE.MeshBasicMaterial({ - color: 0xa01b00 - }), - .8, - .6 - ), 2); + super(pos, level, Mob.mat, 2); } approach(player:Player) { @@ -383,7 +399,6 @@ class Mob extends LiveMorph { let amount = Math.floor(Math.random() * 10) + 3; for (let i = 0; i < amount; i++) { let poly = new Poly(this.position, Math.random() > 0.5 ? 1 : -1); - poly.position.copy(this.position); polys.push(poly); } @@ -465,13 +480,12 @@ class Level extends Physijs.Scene { private mobs:Mob[] = []; private projectiles:Projectile[] = []; private polygons:Poly[] = []; - //private bounds:Geometry[] = []; + private ground:Physijs.BoxMesh; private time:number = 0; static durations:number[] = [20, 30, 45, 60, -1]; static numLevels:number = Level.durations.length; - static mat:Physijs.Material = Physijs.createMaterial( new THREE.MeshBasicMaterial({color: 0xcacaca}), 1, @@ -485,35 +499,22 @@ class Level extends Physijs.Scene { this.add(player); for (let i = 0; i < 15; i++) { - let a = Math.random() > 0.5 ? -1 : 1; - let b = Math.random() > 0.5 ? -1 : 1; - let x = Math.floor(Math.random() * 20 + 10); - let z = Math.floor(Math.random() * 20 + 10); - let size = Math.floor(Math.random() * 4); - - this.spawnMob(this.player.position.clone().add(new Vector3(a*x, 0, b*z)), size); + this.spawn(); } - /* - let light:any = new THREE.DirectionalLight(0xFFFFFF); - light.position.set(20, 40, -15); - light.target.position.copy(player.position); - light.castShadow = true; - light.shadow.camera.left = -60; - light.shadow.camera.top = -60; - light.shadow.camera.right = 60; - light.shadow.camera.bottom = 60; - light.shadow.camera.near = 20; - light.shadow.camera.far = 200; - light.shadow.bias = -.0001; - light.shadow.mapSize.width = light.shadow.mapSize.height = 4096; - this.add(light); - */ - let groundGeometry = new THREE.BoxGeometry(1000, 1, 1000); - let ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0); - ground.receiveShadow = true; - this.add(ground); + this.ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0); + this.add(this.ground); + } + + spawn() { + let a = Math.random() > 0.5 ? -1 : 1; + let b = Math.random() > 0.5 ? -1 : 1; + let x = Math.floor(Math.random() * 20 + 10); + let z = Math.floor(Math.random() * 20 + 10); + let size = Math.floor(Math.random() * 4); + + this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size); } spawnMob(where:Vector3, size:number):void { @@ -553,7 +554,7 @@ class Level extends Physijs.Scene { if (mob.collides(projectile)) { if (mob.level == projectile.level) { collided = true; - mob.damage((projectile.level + 1) * 10); + mob.damage(34); break; } } @@ -592,6 +593,11 @@ class Level extends Physijs.Scene { return true; }); + //spawn new mob? + if (Math.random() < 0.03) { + this.spawn(); + } + //physijs this.simulate(delta, 1); } @@ -600,6 +606,23 @@ class Level extends Physijs.Scene { return Level.durations[this.level] - (this.time / 1000); } + dispose():void { + this.ground.geometry.dispose(); + + this.mobs.forEach((obj) => { + this.remove(obj); + obj.dispose(); + }); + this.projectiles.forEach((obj) => { + this.remove(obj); + obj.dispose(); + }); + this.polygons.forEach((obj) => { + this.remove(obj); + obj.dispose(); + }); + } + //unused static generateGeometry(level:number):THREE.Geometry[] { switch (level) { @@ -633,7 +656,7 @@ enum GameState { } class Game { - private renderer:THREE.WebGLRenderer; + private renderer:THREE.Renderer; private camera:THREE.PerspectiveCamera; private player:Player; @@ -653,14 +676,19 @@ class Game { constructor() { - this.renderer = new THREE.WebGLRenderer({ - antialias: true - }); - this.renderer.setClearColor(0xffffff); - this.renderer.setPixelRatio(window.devicePixelRatio); - this.renderer.setSize(window.innerWidth, window.innerHeight); - this.renderer.shadowMap.enabled = true; - this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; + if (Detector.webgl) { + this.renderer = new THREE.WebGLRenderer({antialias: true}); + let rendr = this.renderer; + rendr.setClearColor(0xffffff); + rendr.setPixelRatio(window.devicePixelRatio); + rendr.setSize(window.innerWidth, window.innerHeight); + } else { + this.renderer = new THREE.CanvasRenderer(); + let rendr = this.renderer; + rendr.setClearColor(0xffffff); + rendr.setPixelRatio(window.devicePixelRatio); + rendr.setSize(window.innerWidth, window.innerHeight); + } document.body.appendChild(this.renderer.domElement); window.addEventListener("resize", this.onWindowResize, false); @@ -739,12 +767,12 @@ class Game { //morph! if (this.keyboard.down("Q")) { - if(this.player.minus > 0){ + if (this.player.minus > 0) { this.player.shrink(); this.player.minus--; } } else if (this.keyboard.down("E")) { - if(this.player.plus > 0){ + if (this.player.plus > 0) { this.player.grow(); this.player.plus--; } @@ -825,16 +853,16 @@ class Game { this.pause(); this.state = GameState.STOPPED; - if(this.level.level != Level.numLevels - 1){ - if(result){ + if (this.level.level != Level.numLevels - 1) { + if (result) { //next level, shit! - this.newLevel(this.level.level+1); + this.level.dispose(); + this.newLevel(this.level.level + 1); this.start(); return; } - }else{ - //end game } + this.level.dispose(); window.removeEventListener("resize", this.onWindowResize, false); @@ -846,11 +874,11 @@ class Game { instructions.style.fontSize = "40px"; instructions.innerHTML = result ? "You won!" : "You lost!"; instructions.style.display = ""; - } -} -if (!Detector.webgl) { - Detector.addGetWebGLMessage(); + if (Detector.webgl) { + (this.renderer).dispose(); + } + } } window.onload = () => { -- cgit v1.2.3-70-g09d2